Android中的多个通知同一个应用程序无法正常工作

时间:2014-12-17 10:02:25

标签: android google-cloud-messaging android-notifications

我已经为我的Android应用程序实现了推送通知。我能够在通知栏中显示多个通知,但一次只能运行一个通知。如果我点击任何通知,它将启动预期的活动,特定通知将消失来自通知栏,但同一应用程序的其他通知将会死亡。当我点击通知的其余部分时没有任何反应。我处理通知的代码如下:

private void sendNotification(String msg, String msgId, int notificationId,
            int type) {
        // SharedPreferences prefs = getSharedPreferences(
        // Utility.PREFS_NAME, MODE_PRIVATE);
        mNotificationManager = (NotificationManager) this
                .getSystemService(Context.NOTIFICATION_SERVICE);

        Intent intent = null;
        Bundle bundle = new Bundle();
        if (type == 1) {
            intent = new Intent(this, Activity_Received.class);

            // bundle.putString("greeting", msg);
            bundle.putString(Utility.KEY_MESSAGE_DELIVERY_ID, msgId);

        } else if (type == 2) {
            intent = new Intent(this, Activity_Birth.class);

        } else {
            return;
        }

        bundle.putBoolean(Utility.KEY_IS_NOTIFICATION, true);
        intent.putExtras(bundle);

        PendingIntent contentIntent;

        // The stack builder object will contain an artificial back stack
        // for
        // the
        // started Activity.
        // This ensures that navigating backward from the Activity leads out
        // of
        // your application to the Home screen.
        TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
        // Adds the back stack for the Intent (but not the Intent itself)

        if (type == 1) {
            stackBuilder.addParentStack(Activity_Received.class);
        } else {
            stackBuilder.addParentStack(Activity_Birth.class);
        }
        // Adds the Intent that starts the Activity to the top of the stack
        stackBuilder.addNextIntent(intent);

        contentIntent = stackBuilder
                .getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT
                        | PendingIntent.FLAG_ONE_SHOT);

        NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
                this)
                .setSmallIcon(R.drawable.ic_launcher)
                .setContentTitle("WishnGreet")
                .setStyle(new NotificationCompat.BigTextStyle().bigText(msg))
                .setContentText(msg)
                .setAutoCancel(true)
                .setSound(
                        RingtoneManager
                                .getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));


        mBuilder.setContentIntent(contentIntent);
        mNotificationManager.notify(notificationId, mBuilder.build());
    }

请告知我需要在上面的代码中更改哪些内容,以便我可以点击我为我的应用程序收到的每个通知并启动预期的活动。

2 个答案:

答案 0 :(得分:4)

为您希望在方法中添加的每个不同通知传递不同的notificationId:sendNotification(String msg, String msgId, int notificationId, int type)

答案 1 :(得分:0)

我编写了以下方法,该方法适用于多个通知。

private void pushNotification(String msg, String msgId, int notificationId,
            int type) {
        mNotificationManager = (NotificationManager) this
                .getSystemService(Context.NOTIFICATION_SERVICE);
        Bundle bundle = new Bundle();
        bundle.putString(Utility.KEY_MESSAGE_DELIVERY_ID, msgId);
        bundle.putBoolean(Utility.KEY_IS_NOTIFICATION, true);
        Intent intent = new Intent(this, Activity_ReceivedGreeting.class);
        intent.putExtras(bundle);

        PendingIntent contentIntent = PendingIntent.getActivity(
                getApplicationContext(), notificationId, intent,
                PendingIntent.FLAG_ONE_SHOT);
        NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
                this)
                .setSmallIcon(R.drawable.ic_launcher)
                .setContentTitle("WishnGreet")
                .setStyle(new NotificationCompat.BigTextStyle().bigText(msg))
                .setContentText(msg)
                .setAutoCancel(true)
                .setSound(
                        RingtoneManager
                                .getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));
        mBuilder.setContentIntent(contentIntent);
        mNotificationManager.notify(notificationId, mBuilder.build());
    }

关键是要删除未决意图上的FLAGS。