把我的项目升级到Android O

buildToolsVersion "26.0.1"

Android Studio中的Lint为以下通知生成器方法显示了一个不推荐的警告:

new NotificationCompat.Builder(context)

The problem is:名安卓开发者更新了他们的文档,其中描述了NotificationChannel,以支持安卓O中的通知,并为我们提供了一个片段,但仍然带有相同的弃用警告:

Notification notification = new Notification.Builder(MainActivity.this)
        .setContentTitle("New Message")
        .setContentText("You've received new messages.")
        .setSmallIcon(R.drawable.ic_notify_status)
        .setChannelId(CHANNEL_ID)
        .build();  

Notifications Overview

My question:有没有其他的解决方案来构建通知,并且仍然支持Android O?

我找到的一个解决方案是在通知中将通道ID作为参数传递.建造师.但这个解决方案并不完全是可重用的.

new Notification.Builder(MainActivity.this, "channel_id")

推荐答案

文档中提到,builder方法NotificationCompat.Builder(Context context)已被弃用.我们必须使用具有channelId参数的构造函数:

NotificationCompat.Builder(Context context, String channelId)

NotificationCompat.Builder Documentation:

此构造函数在API级别26.0.0-beta1中已弃用.使用 而是NotificationCompat.Builder(Context,String).全部已过帐 通知必须指定NotificationChannel ID.

Notification.Builder Documentation:

此构造函数在API级别26中被弃用.使用

如果您想要重用构建器设置器,可以使用channelId创建构建器,并将该构建器传递给助手方法,然后在该方法中设置您的首选设置.

Android相关问答推荐

在Android上使用XSLT文件转换XML文件

StateFlow集合AsState没有更新他的值Jetpack Compose导航

不能有意地从一个活动的可组合功能转移到另一个活动

在Android中使用Room从SQlite数据库中获取实体列表的正确方式是什么?

(已解决)从最近的应用程序打开应用程序时出错

如何在 compose 中使用可变对象?

Jetpack Compose 使用 SavedStateHandle 发送返回结果不适用于 ViewModel 中注入的 SavedStateHandle

如何在Android Studio中删除项目

系统导航栏在某些场景下应用了深色效果

Visual Studio 无法在 Android 上编译 .NET MAUI 项目

未解决的参考:pagerTabIndicatorOffset

如何将一个 Composable 作为其参数传递给另一个 Composable 并在 Jetpack Compose 中显示/运行它

如何将一个 Composable 作为其参数传递给另一个 Composable 并在 Jetpack Compose 中显示/运行它

如何解决 compose 中material 图标的由于接收器类型不匹配,以下候选者都不适用

如何在 Jetpack Compose 中的 VisualTransformation 之后将光标保持在文本字段的末尾

前台服务通知需要几秒钟才能显示

在 Kotlin 中打开新片段时如何对当前片段应用更改?

Jetpack Compose Material3 禁用 ListItem

并行运行两个挂起函数并在第一个返回时返回

新安装 Expo Go 的 android 设备上的 sdk 46.0.0 (@snack/sdk.46.0.0) 出错