Android NotificationCompat.Builder中的setTimeoutAfter不';行不通

Android NotificationCompat.Builder中的setTimeoutAfter不';行不通,android,android-notifications,Android,Android Notifications,我在文档中看到了这种方法: public NotificationCompat.Builder setTimeoutAfter(长持续时间) 指定如果尚未取消此通知,则应取消此通知的时间 文档没有提到兼容性,但是,当我尝试在低于API 26的设备上使用此方法时,它不起作用。我的代码: // Init channel with default importance if api >= 26 initNotificationsChannel() val notificationManage

我在文档中看到了这种方法:

public NotificationCompat.Builder setTimeoutAfter(长持续时间)

指定如果尚未取消此通知,则应取消此通知的时间

文档没有提到兼容性,但是,当我尝试在低于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)

这种行为是错误吗?

setTimeoutAfter
仅在API级别26中添加

在较旧的平台上,它将被忽略(在
通知compat.Builder
中使用时)


setTimeoutAfter
仅添加到API级别26中

在较旧的平台上,它将被忽略(在
通知compat.Builder
中使用时)


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

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

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

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

尝试使用setAutoCancel(true);在较新的华为设备上,setTimeoutAfter似乎仍然被忽略。找到解决方法了吗?尝试使用setAutoCancel(true);在较新的华为设备上,setTimeoutAfter似乎仍然被忽略。你们找到解决方法了吗?是的,看起来你们是对的,但这很奇怪——在compat类中添加不工作的方法。这绝对是可笑的。我想不出一个好的理由,这不是在较低的api级别实现的。是的,看起来你是对的,但它很奇怪-将不工作的方法添加到compat类。这绝对是可笑的。我想不出有什么好的理由不在较低的api级别上实现它。