如何确保通知偷看(不是单挑)

问题描述 投票:0回答:2

我有一个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())
android notifications android-notifications
2个回答
1
投票

我相信Notification.Builder.setOnlyAlertOnce()会得到你期望的结果。


0
投票

@paulajcm的核心是:

我相信Notification.Builder.setOnlyAlertOnce()会得到你期望的结果。

要考虑的另一个方面是通知ID必须是唯一的,否则您永远不会再查看该类型的通知,因为您已经有效地将该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)

所以现在,当一个长时间运行的后台任务已经开始和结束时,用户很清楚,而不会在两者之间发生错误。

© www.soinside.com 2019 - 2024. All rights reserved.