【问题标题】:Multiple notification click launching a same activity android多个通知单击启动相同的活动android
【发布时间】:2016-10-21 10:24:16
【问题描述】:

我设置了通知:

private void sendNotificationForCancellation(String appointmentId, String title, String message) {
        //AppController.getSharedPreferences().edit().putString(Constants.CALL_CASE_ID, notifObject.getCaseDetails().getCaseID()).commit();
        Intent intent = new Intent(this, ActCallRequestsDetail.class);
        intent.putExtra("appointment_id", appointmentId);
        intent.putExtra("isAppIdAvailable", true);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT);

        Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
                .setSmallIcon(R.drawable.ic_stat_note_plus)
                .setLargeIcon(BitmapFactory.decodeResource(this.getResources(), R.drawable.app_icon))
                .setContentTitle(title)
                .setStyle(new NotificationCompat.BigTextStyle().bigText(message))
                .setContentText(message)
                .setAutoCancel(true)
                .setSound(defaultSoundUri)
                .setContentIntent(pendingIntent);

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

        Random generator = new Random();
        notificationManager.notify(generator.nextInt(), notificationBuilder.build());
    }

点击通知会打开一个活动

场景一:

  • 当我有一个通知时,它工作正常。

场景 2:

  • 假设首先从上述通知设置生成 2 个通知 通知单击,它正在打开活动现在我在 打开的活动(ActCallRequestsDetail.class)当我点击 第二次通知,活动没有任何反应 (ActCallRequestsDetail.class) 未刷新

如何解决方案二

【问题讨论】:

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


    【解决方案1】:

    解决方案只是为 PendingIntent 引用添加一个新 ID

    private void sendNotificationForCancellation(String appointmentId, String title, String message) {
            Random generator = new Random();
           //AppController.getSharedPreferences().edit().putString(Constants.CALL_CASE_ID, notifObject.getCaseDetails().getCaseID()).commit();
            Intent intent = new Intent(this, ActCallRequestsDetail.class);
            intent.putExtra("appointment_id", appointmentId);
            intent.putExtra("isAppIdAvailable", true);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    
            PendingIntent pendingIntent = PendingIntent.getActivity(this, generator.nextInt(), intent, PendingIntent.FLAG_ONE_SHOT);
    
            Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
            NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
                    .setSmallIcon(R.drawable.ic_stat_note_plus)
                    .setLargeIcon(BitmapFactory.decodeResource(this.getResources(), R.drawable.app_icon))
                    .setContentTitle(title)
                    .setStyle(new NotificationCompat.BigTextStyle().bigText(message))
                    .setContentText(message)
                    .setAutoCancel(true)
                    .setSound(defaultSoundUri)
                    .setContentIntent(pendingIntent);
    
            NotificationManager notificationManager =
                    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    
    
            notificationManager.notify(generator.nextInt(), notificationBuilder.build());
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多