Notification.Builder(上下文) 已弃用 Android O
Notification.Builder(context) deprecated Android O
Notification.Builder(context) 最近已在 Android O 中的通知通道地点弃用。
问题:
在使用 Notification.Builder(context, StringID)
而不是 Notification.Builder(context)
后,我的 Android O 设备确实收到了通知。
但是,在 Android 23 (M) 上尝试之后,我没有收到通知。我调试了我的代码,一旦调试器在 Android 23 (M) 上命中 post Notification.Builder(context, StringID) 行,它就停止执行。
修复:
为了解决这个问题,我使用 if/else 条件在 Android O 设备和其他设备之间进行隔离。
我有以下代码片段:
Notification.Builder notificationBuilder;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
notificationBuilder = new Notification.Builder(mContext,
mContext.getResources().getString(R.string.notification_id_channel));
} else {
notificationBuilder = new Notification.Builder(mContext);
}
Android Studio 中的 Lint 显示以下弃用行:
问题:
有没有办法摆脱弃用警告线?
我遇到了同样的问题,因为我的目标是 android 22 和 24,所以我这样做了:
NotificationCompat.Builder 通知 = 新 NotificationCompat.Builder(MainActivity.this, "")
我相信有人会说这是黑客攻击,但它消除了警告,我没有任何问题。
似乎传递一个空字符串适用于 < android 26.
也许其他人可以说明这是否会导致 26 出现问题。
谢谢
您必须定义一个唯一的channelId(例如"MyChannelId_01")并调用NotificationCompat.Builder (ctx, "MyChannelId_01")。构造好的Notification会发布到这个NotificationChannel "MyChannelId_01".
这允许您定义通知的重要性(这控制了发布到此频道的中断通知的程度。值为 IMPORTANCE_UNSPECIFIED、IMPORTANCE_NONE、IMPORTANCE_MIN、IMPORTANCE_LOW, IMPORTANCE_DEFAULT 或 IMPORTANCE_HIGH).
你可以在这里找到一个例子:Creating a notification channel
您的解决方案是使用 NotificationCompat.Builder(Context context, String channelId)
。如果您使用它,则不必检查 API 级别,Builder 会忽略 Oreo 之前设备上的频道 ID。
我已经在 API 15、22、23 和 26 上对其进行了测试,它运行良好。
Notification.Builder(context) 最近已在 Android O 中的通知通道地点弃用。
问题:
在使用 Notification.Builder(context, StringID)
而不是 Notification.Builder(context)
后,我的 Android O 设备确实收到了通知。
但是,在 Android 23 (M) 上尝试之后,我没有收到通知。我调试了我的代码,一旦调试器在 Android 23 (M) 上命中 post Notification.Builder(context, StringID) 行,它就停止执行。
修复:
为了解决这个问题,我使用 if/else 条件在 Android O 设备和其他设备之间进行隔离。
我有以下代码片段:
Notification.Builder notificationBuilder;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
notificationBuilder = new Notification.Builder(mContext,
mContext.getResources().getString(R.string.notification_id_channel));
} else {
notificationBuilder = new Notification.Builder(mContext);
}
Android Studio 中的 Lint 显示以下弃用行:
问题:
有没有办法摆脱弃用警告线?
我遇到了同样的问题,因为我的目标是 android 22 和 24,所以我这样做了: NotificationCompat.Builder 通知 = 新 NotificationCompat.Builder(MainActivity.this, "")
我相信有人会说这是黑客攻击,但它消除了警告,我没有任何问题。
似乎传递一个空字符串适用于 < android 26.
也许其他人可以说明这是否会导致 26 出现问题。
谢谢
您必须定义一个唯一的channelId(例如"MyChannelId_01")并调用NotificationCompat.Builder (ctx, "MyChannelId_01")。构造好的Notification会发布到这个NotificationChannel "MyChannelId_01".
这允许您定义通知的重要性(这控制了发布到此频道的中断通知的程度。值为 IMPORTANCE_UNSPECIFIED、IMPORTANCE_NONE、IMPORTANCE_MIN、IMPORTANCE_LOW, IMPORTANCE_DEFAULT 或 IMPORTANCE_HIGH).
你可以在这里找到一个例子:Creating a notification channel
您的解决方案是使用 NotificationCompat.Builder(Context context, String channelId)
。如果您使用它,则不必检查 API 级别,Builder 会忽略 Oreo 之前设备上的频道 ID。
我已经在 API 15、22、23 和 26 上对其进行了测试,它运行良好。