Notification onClick Intent 将错误数据发送到 Activity
Notification onClick Intent sends wrong data to Activity
当我的应用程序中的通知被点击时,我正在使用 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
的 activity 的代码
if (getIntent().hasExtra("taskId")) {
currentTask = dataSource.fetchTask(getIntent().getIntExtra("taskId", 0));
}
当我调试时,方法 getIntExtra() returns 与广播接收器的 onReceive() 中的值不同。
知道为什么会这样吗?
谢谢!
当您创建 Notification
时,而不是这样:
.setContentIntent(PendingIntent.getActivity(context, 0, newIntent, 0))
这样做:
.setContentIntent(PendingIntent.getActivity(context, 0, newIntent, PendingIntent.FLAG_UPDATE_CURRENT))
您的问题是您多次重复使用同一个 PendingIntent
。您需要确保每次使用 PendingIntent
中的 "extras" 都会更新。
注意:如果您同时有多个可用的 Notification
,则需要确保为每个创建唯一的 PendingIntent
。为此,请确保 requestCode
参数(PendingIntent.getActivity()
中的第二个参数)对于每个 Notification
都是不同的(例如,您可以使用 taskId
作为唯一的requestCode
).
当我的应用程序中的通知被点击时,我正在使用 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
的 activity 的代码if (getIntent().hasExtra("taskId")) {
currentTask = dataSource.fetchTask(getIntent().getIntExtra("taskId", 0));
}
当我调试时,方法 getIntExtra() returns 与广播接收器的 onReceive() 中的值不同。
知道为什么会这样吗?
谢谢!
当您创建 Notification
时,而不是这样:
.setContentIntent(PendingIntent.getActivity(context, 0, newIntent, 0))
这样做:
.setContentIntent(PendingIntent.getActivity(context, 0, newIntent, PendingIntent.FLAG_UPDATE_CURRENT))
您的问题是您多次重复使用同一个 PendingIntent
。您需要确保每次使用 PendingIntent
中的 "extras" 都会更新。
注意:如果您同时有多个可用的 Notification
,则需要确保为每个创建唯一的 PendingIntent
。为此,请确保 requestCode
参数(PendingIntent.getActivity()
中的第二个参数)对于每个 Notification
都是不同的(例如,您可以使用 taskId
作为唯一的requestCode
).