Android 单击打开活动时的本地通知

Android 单击打开活动时的本地通知,android,notifications,Android,Notifications,我有一个本地通知,它设置在我的一个接收者中。单击通知后,我想打开一个特定的活动。下面是我的代码 NotificationCompat.Builder builder = (NotificationCompat.Builder) new NotificationCompat.Builder(context) .setSmallIcon(R.drawable.ic_launcher) .setCo

我有一个本地通知,它设置在我的一个接收者中。单击通知后,我想打开一个特定的活动。下面是我的代码

NotificationCompat.Builder builder =
            (NotificationCompat.Builder) new NotificationCompat.Builder(context)
                    .setSmallIcon(R.drawable.ic_launcher)
                    .setContentTitle("Its Your day!!")
                    .setContentText(message)
                    .setAutoCancel(true);

    Intent notificationIntent = new Intent(context, MainActivity.class);
    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

    PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent,
            PendingIntent.FLAG_UPDATE_CURRENT);

    builder.setContentIntent(contentIntent);
    // Add as notification
    NotificationManager manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    manager.notify(times, builder.build());

但这是行不通的。单击通知后,它将从状态栏中删除通知。我遗漏了什么吗?

添加
Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_SINGLE_TOP
作为您的“Intent”上的
标志。像-

notificationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_SINGLE_TOP)

还提供用于通知的唯一id。像-

    int uniqueNotificationId = (int) (System.currentTimeMillis() & 0xfffffff);
    PendingIntent contentIntent = PendingIntent.getActivity(context, uniqueNotificationId , notificationIntent,
            PendingIntent.FLAG_UPDATE_CURRENT);
此外——

manager.notify(uniqueNotificationId , builder.build());
试试这个:

Intent intent = new Intent(this, MainActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent,
                PendingIntent.FLAG_ONE_SHOT);
与此相反:

Intent notificationIntent = new Intent(context, MainActivity.class);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent,
        PendingIntent.FLAG_UPDATE_CURRENT);
在通知生成器代码之前使用此代码

现在,这是完整版本:

Intent intent = new Intent(this, MainActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent,
            PendingIntent.FLAG_ONE_SHOT);

NotificationCompat.Builder builder =
            (NotificationCompat.Builder) new NotificationCompat.Builder(context)
                    .setSmallIcon(R.drawable.ic_launcher)
                    .setContentTitle("Its Your day!!")
                    .setContentText(message)
                    .setAutoCancel(true)
                    .setContentIntent(pendingIntent);

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

notificationManager.notify(times, notificationBuilder.build());
试着用这个。我希望你能得到你想要的答案

更新

以下是示例项目:

关闭应用程序后是否尝试过。如果MainActivity处于活动状态,SINGLE_TOP将在
onNewIntent()中传递意图。
pendingent.FLAG_UPDATE_CURRENT
仅在相同的
requestCode
中才有意义。每个
pendingent
的唯一ID每次都会创建一个新的
pendingent
。@madhuriHR检查更新部分,我添加了一个示例项目。如果你有任何问题,请告诉我。