当应用程序在前台运行并且用户单击通知时,如何删除通知?

时间:2019-12-16 17:21:03

标签: android push-notification android-notifications

当应用程序在前台运行并且如果应用程序接收到通知,我们需要显示平视通知(通知在您的应用发出通知时显示,稍后消失,但在通知抽屉中仍然可见)通常),以下是用户单击通知时需要遵循的要求。

  1. 如果应用程序已经打开并且用户单击通知,则通知 应该从状态栏中删除。 (这不起作用。即使我 能够删除通知,应用程序正在返回 到初始屏幕
  2. 如果应用处于打开状态并且在后台运行,则应用应恢复为 以前已经打开过的任何屏幕。
  3. 如果应用已关闭,并且用户单击状态栏中的通知,则该应用 应该在初始屏幕上打开。

第一个要求不起作用。当应用程序在前台运行时,我可以删除通知,但是显示的是主屏幕,而不是回到当前屏幕。

例如,以下是步骤。

  1. 启动应用程序:活动A出现[任务堆栈:A]
  2. 导航到活动B [任务堆栈:A-> B]
  3. 应用收到通知。按下通知。活动A出现! [任务堆栈:A-> B-> A](用户可以按“返回”按钮转到 活动“ B”)。但这不是预期的行为。什么时候 用户点击通知(当应用在前台运行时), 通知应删除,但主屏幕不应出现。它 应该留在当前屏幕上。

下面是代码。

{
    Intent intent = new Intent(this, AppStartActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

    PendingIntent pendingIntent = PendingIntent.getActivity(this,
            (int)System.currentTimeMillis(), intent,
            PendingIntent.FLAG_UPDATE_CURRENT);

    String channelId = getString(R.string.default_notification_channel_id);
    Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);

    String notificationTitle = "Title";
    String notificationBody = "Body";

    NotificationCompat.Builder notificationBuilder =
            new NotificationCompat.Builder(this, channelId)
                    .setSmallIcon(R.mipmap.ic_launcher)
                    .setContentTitle(notificationTitle)
                    .setContentText(notificationBody)
                    .setAutoCancel(true)
                    .setSound(defaultSoundUri)
                    .setPriority(NotificationCompat.PRIORITY_HIGH)
                    .setContentIntent(pendingIntent);

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

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        NotificationChannel channel = new NotificationChannel(channelId,
                "Channel human readable title",
                NotificationManager.IMPORTANCE_HIGH);
        notificationManager.createNotificationChannel(channel);
    }

    notificationManager.notify(0 , notificationBuilder.build());
}

我在How to open current activity which is open while click on notification

处发现了同样的问题

我尝试了该链接中的所有答案,但没有任何效果。任何人都可以让我知道如何删除通知,而当应用程序在前台运行时,应用程序不显示初始屏幕。

0 个答案:

没有答案