Android 单挑通知在几秒钟后消失

jav*_*tti 4 notifications android heads-up-notifications

我希望通知不会在几秒钟后消失。所以我创建了这样的通知:

  NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
        builder.setSmallIcon(R.drawable.cast_ic_notification_small_icon)
                .setDefaults(Notification.FLAG_ONGOING_EVENT)
                .setPriority(Notification.PRIORITY_HIGH)
                .setContentTitle(notificationDetails.getSubject())
                .setContentText(notificationDetails.getMessage())
                .setColor(context.getResources().getColor(R.color.colorPrimary))
                .setOngoing(true);
Run Code Online (Sandbox Code Playgroud)

并设置 FLAG_ONGOING_EVENT 和方法 setOngoing(true)。

但几秒钟后,通知继续消失。我希望通知仅在用户单击时消失。谢谢你。

Dan*_*rov 8

实际上可以使提醒通知持久化。诀窍是使用setFullScreenIntent. 如果您不希望通知具有全屏版本,则可以使用不会实际启动任何活动的虚拟意图,如下所示:

PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, new Intent(), 0);
notificationBuilder.setFullScreenIntent(pendingIntent, true);
Run Code Online (Sandbox Code Playgroud)

这是一种黑客行为,但这种行为是有道理的。如果应用程序尝试显示全屏通知,则它必须是重要事件,例如闹钟或电话。如果手机决定不显示全屏通知,它可能仍会显示一些持久的内容,直到用户采取行动。

这适用于我测试过的手机,但没有记录该行为,因此无法保证。


小智 8

在 Honor 和华为设备上观察到此问题。您可以尝试通过使用AndroidManifestsetFullScreenIntent并向其添加权限来修复它。

代码:

PendingIntent pIntent = PendingIntent.getActivity(this, 0, new Intent(), PendingIntent.FLAG_UPDATE_CURRENT);
notificationBuilder.setFullScreenIntent(pIntent, true);
Run Code Online (Sandbox Code Playgroud)

AndroidManifest.xml:

<uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
Run Code Online (Sandbox Code Playgroud)


san*_*mar 3

无法更改平视通知的持续时间 它是在操作系统级别设置的 取决于操作系统为其提供多少时间。