未收到意向附加费
Posted
技术标签:
【中文标题】未收到意向附加费【英文标题】:Intent extras not received 【发布时间】:2014-04-21 17:43:27 【问题描述】:我正在显示来自附加到我的项目的库的通知,当单击通知时,通知会转到 Activity (ReceivingActivity)。单击通知后活动打开,但未收到附加到它的附加内容。
通知触发代码 - 当我收到 gcm 消息并且通知代码在库中时,我调用 sendNotification
public static final int NOTIFICATION_ID = 1;
private NotificationManager mNotificationManager;
NotificationCompat.Builder builder;
private void sendNotification(Bundle extras)
mNotificationManager = (NotificationManager)
this.getSystemService(Context.NOTIFICATION_SERVICE);
Intent redirectIntent = new Intent(this, Class.forName("com.xyz.kljdf.ReceivingActivity"));
redirectIntent.putExtra("key", "value"); // These extras are not received in ReceivingActivity onCreate(), see the code below
PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
redirectIntent, 0);
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(this)
.setSmallIcon(((Context)this).getResources().getIdentifier("icon", "drawable", getPackageName()))
.setContentTitle(extras.getString(PushConstants.TITLE))
.setStyle(new NotificationCompat.BigTextStyle()
.bigText(extras.getString(PushConstants.ALERT)))
.setContentText(extras.getString(PushConstants.ALERT));
mBuilder.setContentIntent(contentIntent);
mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());
检查 ReceivingActivity 中的 extras...
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_receiving);
Log.i("extras..... @@@@@@", getIntent().getExtras().toString()); //NPE here
我需要帮助来弄清楚如何传递附加信息并正确接收它们。
【问题讨论】:
***.com/questions/3168484/… 【参考方案1】:确保 PendingIntent 在被调用时实际上是在传递数据。请参阅此答案以获得解释:https://***.com/a/3851414/1426565
对于其他任何人,如果您确定 Intent 已经存在并且只是被带到前面,则默认情况下不会将新 Intent 的数据传递给它。您可以覆盖 onNewIntent(Intent) 以解决这个问题:
@Override
protected void onNewIntent(Intent intent)
super.onNewIntent(intent);
setIntent(intent); // Set the new Intent's data to be the currently passed arguments
【讨论】:
在我发送通知之前,活动/意图从未打开,所以我认为这不是正确的答案。 那么我很抱歉。这通常是一个常见问题。那你检查过这个吗? ***.com/a/3851414/1426565 谢谢您,您发布的链接有正确答案,修改您的答案为仅链接一,以便我接受。 修改为首先显示正确答案,但留下了 onNewIntent() 因为通知和 PendingIntents 经常忽略这一点 但是如果应用程序不在堆栈中并且通知活动在堆栈顶部,则不会调用此方法。请帮忙以上是关于未收到意向附加费的主要内容,如果未能解决你的问题,请参考以下文章
android 兼容性包 - 片段...未附加到 Activity
Google Apps 脚本按钮:我可以分配一个未附加到工作表的“全局”脚本吗?
当应用程序处于后台时,Android 2nd 推送通知有效负载数据未在附加中接收