Android O报告通知未发布到频道 – 但确实如此
作者:互联网
几个Android O通知问题:
1)我创建了一个Notification Channel(见下文),用.setChannelId()调用构建器(传入我创建的频道的名称,“wakey”;然而,当我运行应用程序时,我收到一条消息我没有向渠道“null”发布通知.可能是什么导致了这个?
2)我怀疑#1的答案可以在它要检查的“日志”中找到,但我已经检查过logcat&看不到有关通知或频道的任何信息.它说要查看的日志在哪里?
这是我用来创建频道的代码:
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
CharSequence name = context.getString(R.string.app_name);
String description = "yadda yadda"
int importance = NotificationManager.IMPORTANCE_DEFAULT;
NotificationChannel channel = new NotificationChannel(NOTIFICATION_CHANNEL, name, importance);
channel.setDescription(description);
notificationManager.createNotificationChannel(channel);
这是生成通知的代码:
Notification.Builder notificationBuilder;
Intent notificationIntent = new Intent(context, BulbActivity.class);
notificationIntent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND); // Fix for https://code.google.com/p/android/issues/detail?id=53313
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
Intent serviceIntent = new Intent(context, RemoteViewToggleService.class);
serviceIntent.putExtra(WakeyService.KEY_REQUEST_SOURCE, WakeyService.REQUEST_SOURCE_NOTIFICATION);
PendingIntent actionPendingIntent = PendingIntent.getService(context, 0, serviceIntent, PendingIntent.FLAG_CANCEL_CURRENT);
_toggleAction = new Notification.Action(R.drawable.ic_power_settings_new_black_24dp, context.getString(R.string.toggle_wakey), actionPendingIntent);
notificationBuilder= new Notification.Builder(context)
.setContentTitle(context.getString(R.string.app_name))
.setContentIntent(contentIntent)
.addAction(_toggleAction);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
notificationBuilder.setChannelId(NOTIFICATION_CHANNEL);
}
notificationBuilder.setSmallIcon(icon);
notificationBuilder.setContentText(contentText);
_toggleAction.title = actionText;
int priority = getNotificationPriority(context);
notificationBuilder.setPriority(priority);
notificationBuilder.setOngoing(true);
Notification notification = notificationBuilder.build();
notificationManager.notify(NOTIFICATION_ID, notification);
解决方法:
我想我已经学会了一些事情,这些都是答案:
>我使用的是模拟器设备,其图像不包含Play商店.
>图片上的Google Play服务版本不是最新版本,所以我应该收到通知告诉我需要升级.由于该通知未应用于频道,因此未显示.
>如果我将Android Studio中的logcat设置为“No Filters”而不是“仅显示选定的应用程序”,那么我发现日志指出有问题的通知是Play服务“需要更新”通知.
所以,我更改为包含Play商店的图片,并且它正确地显示了通知(也许该通知的频道是由Play商店设置的?),让我更新到最新的Google Play服务,我的避风港从那以后就看到了那个警告.
所以,长话短说(太迟了) – 使用Android O,如果您使用的是Google Play服务&在模拟器上进行测试,选择包含Play商店的图像,或忽略吐司(祝你好运!).
标签:android-8-0-oreo,android,notifications 来源: https://codeday.me/bug/20190926/1818016.html