当我点击我的应用中的通知时,我正在使用newIntent传递正确的taskId。这是我广播接收器的onReceive()内的代码:
Intent newIntent = new Intent(context, TaskActivity.class);
int taskId = intent.getIntExtra("taskId", 0);
newIntent.putExtra("taskId", intent.getIntExtra("taskId", 0));
Notification notification = new NotificationCompat.Builder(context)
.setContentTitle(intent.getStringExtra("NotificationTitle"))
.setContentText(intent.getStringExtra("NotificationText"))
.setSmallIcon(intent.getIntExtra("NotificationIcon", 0))
.setContentIntent(PendingIntent.getActivity(context, 0, newIntent, 0))
.build();
这是接收Intent
的活动的代码if (getIntent().hasExtra("taskId")) {
currentTask = dataSource.fetchTask(getIntent().getIntExtra("taskId", 0));
}
当我调试时,方法getIntExtra()返回的值与广播接收器的onReceive()中的值不同。
为什么会这样?
谢谢!
答案 0 :(得分:3)
创建Notification
时,而不是:
.setContentIntent(PendingIntent.getActivity(context, 0, newIntent, 0))
这样做:
.setContentIntent(PendingIntent.getActivity(context, 0, newIntent, PendingIntent.FLAG_UPDATE_CURRENT))
您的问题是您多次重复使用相同的PendingIntent
。你需要确保"额外"每次使用时都会更新PendingIntent
。
注意:如果您同时有多个Notification
可用,则需要确保为每个PendingIntent
创建唯一requestCode
个。为此,请确保每个PendingIntent.getActivity()
的{{1}}参数(Notification
中的第二个参数)不同(例如,您可以使用taskId
作为唯一requestCode
)。