如何确保通知通知(不是平视)

时间:2019-02-13 23:41:10

标签: android notifications android-notifications

我有一个要查看的I / O任务期间弹出的通知,以便用户知道其他地方(状态栏)的详细信息。在较旧的设备上,我的代码可以运行,但是在较新的设备上,通知不会在状态栏上消失,而是永久性提醒。我希望在更新的设备上,通知更新(当前文件)会导致窥视复位。任何人都知道确保通知是偷窥而不是平视的方法吗?

我的应用为全屏显示,这就是default优先显示的原因

    Util.createNotificationChannel(
        applicationContext,
        "copy",
        "Copying...",
        "Notifications for copy tasks.")

    val builder = Util.createNotification(
        applicationContext,
        "copy",
        applicationContext.getString(R.string.copyingImages),
        applicationContext.getString(R.string.preparing))

    val notifications = NotificationManagerCompat.from(applicationContext)
    notifications.notify(builder.build())

    ...
    (loop)

    builder
        .setProgress(images.size, index, false)
        .setContentText(value.name)
        .priority = NotificationCompat.PRIORITY_DEFAULT
    notifications.notify(builder.build())

2 个答案:

答案 0 :(得分:1)

我相信Notification.Builder.setOnlyAlertOnce()将获得您期望的结果。

答案 1 :(得分:0)

@paulajcm具有其核心:

  

我相信Notification.Builder.setOnlyAlertOnce()将获得您期望的结果。

要考虑的另一个方面是,通知ID必须是唯一的,否则您将永远不会再次窥视该类型的通知,因为您已经有效地将其设置为不再窥视。

builder.notify(JOB_TAG, id, notification) // id must be 'unique'

我要做的另一件事是切换setOnlyAlertOnce(false)作为最后一条消息,因此有一个窥视通知操作也已完成:

        builder
            .setContentText("Complete")
            .setProgress(0,0,false)
            .setOnlyAlertOnce(false)
        notifications.notify(builder.build(), notificationId)

因此,对于一个长期运行的后台任务而言,现在对用户来说很清楚,而不会在它们之间造成错误。