Android 通知点击打开应用程序仅适用于第一次

Posted

技术标签:

【中文标题】Android 通知点击打开应用程序仅适用于第一次【英文标题】:Android notification click to open app only works 1st time 【发布时间】:2021-03-10 15:44:12 【问题描述】:

我有一个带有通知的前台服务。我这样创建通知:

    Notification notification = new NotificationCompat.Builder(this, CHANNEL_ID)
            .setOngoing(true)
            .setContentTitle("App name")
            .setContentText(Utility.getNotificationContentText())
            .setSmallIcon(R.mipmap.ic_launcher_round)
            .setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
            .setContentIntent(pendingIntent)
            .setOnlyAlertOnce(true)
            .build();

在通知中,我设置了一个待处理的意图,如下所示:

    Intent notificationIntent = new Intent(this, MainActivity.class);
    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);

当我第一次点击通知时,它按预期工作。它打开应用程序。但是,当我第二次点击通知时,什么也没有发生。

不管怎样,我打开 MainActivity.class,但我的应用程序有不同的片段。我想打开一个特定的片段,但我不确定是否可以将 FragmentName.class 传递给意图。

对于让通知点击每次都能正常工作有什么帮助吗?

【问题讨论】:

【参考方案1】:

设置PendingIntet 的以下标志,以便您可以使用新的PendingIntent 更新当前未决意图。

PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 
              PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_ONE_SHOT);

【讨论】:

感谢您的回答,但这不起作用。【参考方案2】:

我设法修复它。问题是我更新通知的意图是错误的类。

【讨论】:

以上是关于Android 通知点击打开应用程序仅适用于第一次的主要内容,如果未能解决你的问题,请参考以下文章

Android 地理围栏仅适用于打开的应用程序

android面临崩溃报告仅适用于8.0和8.1中的firebase通知

JSON仅适用于Debug模式,但不适用于android中的apk文件

适用于 Android 的 Azure 通知中心:如何使用后台服务处理数据消息?

如何使用适用于 Android 的 Push sharp 库一次发送多个推送通知?

我想在setVisibility上制作动画视图,但它仅适用于第一次