【发布时间】:2016-11-23 01:18:45
【问题描述】:
当点击我的应用程序中的通知时,我正在使用 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() 方法返回的值与广播接收器的 onReceive() 中的值不同。
任何想法为什么会发生这种情况?
谢谢!
【问题讨论】:
-
我建议你通过打印taskId的值来交叉检查
int taskId = intent.getIntExtra("taskId", 0);这行代码。你从哪里得到这个值? -
该值来自于 onreceive() 参数中传递的意图。在此之前,我使用键“taskId”设置了一个警报管理器。我已经打印了这个值,这正是问题所在:当我将它传递给警报管理器时,它与广播接收器接收到的相同。然而,由通知的点击意图启动的活动接收到错误的值。
标签: android android-intent notifications broadcastreceiver