来自 pendingintent 的 Android 捆绑包始终接收为 null

Posted

技术标签:

【中文标题】来自 pendingintent 的 Android 捆绑包始终接收为 null【英文标题】:Android bundle from pending intent always recieved as null 【发布时间】:2017-01-15 07:49:56 【问题描述】:

我尝试了 *** 中建议的所有内容 - 没有任何帮助。 通知工作正常,只是以某种方式丢失了它的捆绑包。

这是我的 PendingIntent:

 NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);

            Intent intent = new Intent(this, LoginActivity.class);
         //   Intent intent = new Intent().setClass(this, LoginActivity.class);
            intent.putExtra(Constants.KEY_BUNDLE_MESSAGE_FROM_NOTIFICATION,true);
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);


            //intent.setAction("dummy");

            PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

            NotificationCompat.Builder noBuilder = new NotificationCompat.Builder(this)
                    .setSmallIcon(R.mipmap.ic_launcher)
                    .setContentTitle(title)
                    .setContentText(text)
/*                    .setStyle(new NotificationCompat.BigTextStyle()
                            .bigText(message))*/
                    .setAutoCancel(true)
                    .setContentIntent(contentIntent);

            notificationManager.notify(0, noBuilder.build());

1) 向 Intent 添加动作:intent.setAction("dummy");

2) 将 setClass 添加到 Intent:.setClass(this, LoginActivity.class);

3) 待定意图尝试了所有标志:PendingIntent.FLAG_UPDATE_CURRENT / FLAG_CANCEL_CURRENT / FLAG_ONE_SHOT/ 0

4) 尝试在“onNewIntent”和“onCreate”中接收额外内容

接收活动中的 extras 总是假的

 @Override
    protected void onNewIntent(Intent intent) 
        super.onNewIntent(intent);
        Log.d(TAG, "im in login from notification!   "+ intent.hasExtra(Constants.KEY_BUNDLE_MESSAGE_FROM_NOTIFICATION));
    


@Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);

    Intent intent = getIntent();
    Log.d(TAG, "im in login from notification!   "+ intent.hasExtra(Constants.KEY_BUNDLE_MESSAGE_FROM_NOTIFICATION));

有什么想法吗? 谢谢!

【问题讨论】:

onNewIntent 添加:setIntent(intent) 仍然像往常一样在日志中得到错误.. 您的代码看起来都很好。请发布清单 【参考方案1】:

onNewIntent 添加:setIntent(intent)

【讨论】:

以上是关于来自 pendingintent 的 Android 捆绑包始终接收为 null的主要内容,如果未能解决你的问题,请参考以下文章

onHandleWork 从未收到来自 pendingintent 地理围栏的意图

如何创建不同的pendingintent 使filterEquals() 返回false?

java 添加联系人号码。来自https://stackoverflow.com/questions/4744187/how-to-add-new-contacts-in-android

PendingIntent

AlarmManager与PendingIntent

解决PendingIntent传递参数为空的问题