カスタム ボタン (addAction を使用) を使用して Jelly Bean 通知を作成する際に助けが必要です。問題は、私はそれを機能させることができないということです。基本的に、私は次のパラメータを使用して通知を作成したいと考えています。私のコードは: レシーバー:
private BroadcastReceiver onNotification = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("NOTIFICATION", "Received broadcast");
Bundle extras = intent.getExtras();
int state = extras.getInt("state");
if (state == 1) {
playPauseMethod();
}
}
};
私が追加したアクティビティのonCreateメソッドで:
IntentFilter notif_iff = new IntentFilter(
MainService.NOTIF_BROADCAST);
LocalBroadcastManager.getInstance(getActivity()).registerReceiver(
onNotification, notif_iff);
MainService のコードは次のとおりです。
public static final String ACTION = "com.formatbce.mdrive.action.UPDATE_UI";
public static final String NOTIF_BROADCAST = "com.formatbce.mdrive.action.NOTIF_BRD";
Intent in = new Intent(ACTION);
Intent notifInt = new Intent(NOTIF_BROADCAST);
private NotificationManager mNM = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
private void showNotification(final int statusBarIconID,
final int bigIconID, final int ppIconID, final String contentTitle,
final String contentText, final boolean showIconOnly) {
PendingIntent layoutIntent = PendingIntent.getActivity(this, 0,
new Intent(this, MediaFragmentActivity.class), 0);
int state = 1;
notifInt.setAction("blabla");
notifInt.putExtra("state", state);
PendingIntent mIntent = PendingIntent.getBroadcast(
getApplicationContext(), 0, notifInt,
PendingIntent.FLAG_UPDATE_CURRENT);
notification = new Notification.Builder(this)
.setContentTitle(contentTitle).setContentText(contentText)
.setSmallIcon(bigIconID).setContentIntent(layoutIntent)
.addAction(ppIconID, null, mIntent)
.build();
notification.flags |= Notification.FLAG_ONGOING_EVENT;
mNM.notify(NOTIFICATION, notification);
}
そのため、showNotification() メソッドを呼び出すと、通知が表示され、本文をクリックするとうまくいきます。しかし、addActionで設定されたボタンをクリックしても何も変わりません... つまり、onReceive() のその行でさえ機能しません:
Log.d("NOTIFICATION", "Received broadcast");
ここで何が問題なのですか?マニュアルを大量に読んでいますが、理解できません。誰かがそれを機能させる方法を説明できますか? ありがとうございました!
PS addAction PendingIntent を getActivity に変更すると、問題なく動作します...