0
私は、クリックされたボタンに基づいて異なる機能をトリガーする必要のあるメディア通知を作成しています。ボタンを区別するための方法はありますか?4-5個のIntentsとPendingIntentsを作成する必要はありますか?通知ボタンごとに異なるトリガーがクリックされています
編集:新しい保留中のインテントを初期化する新しい機能を追加しましたが、私はそのプレイを押すとplayIntentがトリガーされますが、 playIntentが再びトリガーされることを意図して一時停止します。
private void showNotification(boolean persistent) {
String channel_id = "TEST_CHANNEL";
NotificationManager manager = (NotificationManager) getSystemService(
Context.NOTIFICATION_SERVICE
);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
NotificationChannel testChannel = new NotificationChannel(
channel_id,
"TEST_CHANNEL",
NotificationManager.IMPORTANCE_DEFAULT
);
testChannel.setLightColor(Color.GREEN);
assert manager != null;
manager.createNotificationChannel(testChannel);
}
PendingIntent pauseIntent = initIntent("pause");
PendingIntent playIntent = initIntent("play");
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(this, channel_id)
.setSmallIcon(R.drawable.ic_remote_control)
.addAction(R.drawable.ic_play_button, "Play", playIntent)
.addAction(R.drawable.ic_round_pause_button, "Pause", pauseIntent)
.addAction(R.drawable.ic_forward, "Title", null)
.addAction(R.drawable.ic_back_left_arrow_circular_button, "Title", null)
.setStyle(new android.support.v4.media.app.NotificationCompat.MediaStyle())
.setOngoing(persistent)
.setAutoCancel(true);
assert manager != null;
manager.notify(123, mBuilder.build());
}
private PendingIntent initIntent(String action) {
Intent tempIntent = new Intent(this, ActionReceiver.class);
tempIntent.putExtra("action", action);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
stackBuilder.addNextIntent(tempIntent);
return PendingIntent.getBroadcast(
this,
1,
tempIntent,
PendingIntent.FLAG_UPDATE_CURRENT
);
}
最新のコードを確認してください、私はそれを行いましたが、それでも動作しません – Nick
ActionReceiverクラスを貼り付けてください。 ActionReceiverでは、 "action"アクション文字列に基づいて区別できます – nomag