具有相同意图的推送通知打开 Activity

Posted

技术标签:

【中文标题】具有相同意图的推送通知打开 Activity【英文标题】:Push notification open Activity with same intent 【发布时间】:2014-07-14 05:17:34 【问题描述】:

我收到带有数据(意图)的推送通知。如果我收到两个或多个不同 id 的通知,但打开一个 Activity 并且 id 相同。例如,我收到三个不同 id=1、2、3 的通知。但是当 Activity 启动时使用一个 id = 3。当我点击第一个或第二个 id 为 1 和 2 的通知时,打开 id 为 3 的 Activity。你能帮助理解我在代码中的错误吗?

NOTIFICATION_ID ++;
        mNotificationManager = (NotificationManager)
                this.getSystemService(Context.NOTIFICATION_SERVICE);
        NotificationCompat.Builder mBuilder =
                new NotificationCompat.Builder(this)
        .setSmallIcon(R.drawable.ic_launcher)
        .setContentTitle(msg.getString("title"))
        .setContentText(msg.getString("message"))
        .setDefaults(Notification.DEFAULT_SOUND)
        .setStyle(new NotificationCompat.BigPictureStyle().bigPicture(Picasso.with(getApplicationContext()).load(msg.getString("icon")).get()).setSummaryText(msg.getString("message")))        
        .setAutoCancel(true);

        Log.e("msg---",msg.toString());
        Intent intent = new Intent(Intent.ACTION_MAIN);
        intent.setComponent(new ComponentName(this, ActivityDetail.class));
//        intent.setAction(Intent.ACTION_MAIN);
        intent.addCategory(Intent.CATEGORY_LAUNCHER);
//        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
        intent.putExtra(Keys._PostId,msg.getString("id"));
        intent.putExtra(Keys._Image, msg.getString("icon"));
        intent.putExtra(Keys._PostType,  msg.getString("post_type"));       
        PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, 0);

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

【问题讨论】:

你需要根据你的id设置PendingIntent 请试试这个可能对你有帮助PendingIntent contentIntent=PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);谢谢;-) 【参考方案1】:

像这样创建你的PendingIntent 并做一个技巧

PendingIntent contentIntent = PendingIntent.getActivity(this, (int) (Math.random() * 100), intent, PendingIntent.FLAG_UPDATE_CURRENT);

【讨论】:

拯救了我的一天 :) 谢谢兄弟@BirajZalavadia

以上是关于具有相同意图的推送通知打开 Activity的主要内容,如果未能解决你的问题,请参考以下文章

如何在创建后通过更改活动来处理推送通知意图?

友盟-推送-Andorid-消息推送-打开通知消息进入特定Activity操作?

Android实现点击通知栏后,先启动应用再打开目标Activity ,极光推送等推送的也可以参考一下(转)

为啥大多数推送通知无法到达设备

如何使用解析推送通知打开 URL?

推送通知打开一个新活动