getLongExtra始终使用PendingIntent返回默认值

时间:2014-12-19 14:13:18

标签: android android-intent bundle android-pendingintent extras

我想使用像这样的PendingIntent传递一个长值

Intent intentForPending = new Intent(context, NewBlaBlaActivity.class);
long courseId = 15252;
intentForPending.putExtra("courseId", courseId);
intentForPending.putExtra("isFromPushNotification", true);

PendingIntent contentIntent = PendingIntent.getActivity(context, 0, intentForPending, 0);

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
        context).setSmallIcon(R.drawable.appicon)
        .setContentTitle("BlaBla")
        .setStyle(new NotificationCompat.BigTextStyle().bigText(message))
        .setContentText(message)
        .setAutoCancel(true);


mBuilder.setContentIntent(contentIntent);
mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());

获取以下值

Intent intent = getIntent();
if(intent.getBooleanExtra("isFromPushNotification", false)) {
    long courseId = intent.getLongExtra("courseId", 0);     
}

但我总是从意图中得到0。奇怪的是,虽然我可以从意图中获得带有'isFromPushNotification'键的布尔值,但我无法从同一意图中获得长值。

这让我发疯。正如您所看到的,它是一个PushNotification,当我点击通知时会运行此代码。

我尝试了从stackoverflow中的论坛和问题中获得的所有方法,在def和长对象的原始值上添加L后缀。但我认为PendingIntent是湿毯。

我在等待你的神圣建议。谢谢!

1 个答案:

答案 0 :(得分:3)

如果您要使用PendingIntent的额外内容,请始终在PendingIntent工厂方法的最后一个参数中使用标记(在您的情况下为getActivity())。您可能希望FLAG_UPDATE_CURRENT指示使用新的附加内容替换任何现有的PendingIntent内容。