我正在创建一个媒体通知,需要触发基于点击按钮的不同功能。有没有办法区分这些按钮,或者我需要创建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
);
}发布于 2017-09-14 21:01:42
您需要为每个操作创建不同的待定意图。尽管如此,您也可以使用相同的类来处理基于每个待定意图的不同操作的所有操作。
https://stackoverflow.com/questions/46218610
复制相似问题