NotificationCompat.Builder中的setTimeoutAfter不起作用

时间:2019-12-06 12:10:27

标签: android android-notifications

我在文档中看到了此方法:

public NotificationCompat.Builder setTimeoutAfter(long durationMs)

指定该通知应取消的时间(如果尚未取消的话)。

https://developer.android.com/reference/androidx/core/app/NotificationCompat.Builder.html#setTimeoutAfter(long)

文档没有提到兼容性,但是,当我尝试在低于API 26的设备上使用此方法时-它不起作用。我的代码:

// Init channel with default importance if api >= 26
initNotificationsChannel()

val notificationManager = NotificationManagerCompat.from(this)
val notification = NotificationCompat.Builder(this, channelId)
        .setContentTitle("Title")
        .setContentText("Text")
        .setSmallIcon(R.drawable.icon)
        .setTimeoutAfter(5000)
        .build()

notificationManager.notify(1, notification)

此行为是错误吗?

2 个答案:

答案 0 :(得分:2)

setTimeoutAfter仅在API级别26中添加。

在旧平台上,它将被忽略(在NotificationCompat.Builder中使用时)。

Docs

答案 1 :(得分:0)

我最终使用以下解决方法:

notificationManagerCompat.notify(ID, myNotification);
new Handler(Looper.getMainLooper()).postDelayed (() -> {
    notificationManagerCompat.cancel(ID);
}, DELAY);