普通通知生成器不会在 Android O 上显示通知。
如何在 Android 8 Oreo 上显示通知?
是否有任何新代码要添加以在 Android O 上显示通知?
在 Android O 中,必须在 Notification Builder 中使用通道
下面是一个示例代码:
// Sets an ID for the notification, so it can be updated. int notifyID = 1; String CHANNEL_ID = "my_channel_01";// The id of the channel. CharSequence name = getString(R.string.channel_name);// The user-visible name of the channel. int importance = NotificationManager.IMPORTANCE_HIGH; NotificationChannel mChannel = new NotificationChannel(CHANNEL_ID, name, importance); // Create a notification and set the notification channel. 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();
或通过以下方式处理兼容性:
NotificationCompat notification = new NotificationCompat.Builder(this) .setSmallIcon(R.drawable.notification_icon) .setContentTitle("My notification") .setContentText("Hello World!") .setChannelId(CHANNEL_ID).build();
现在让它通知
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); mNotificationManager.createNotificationChannel(mChannel); // Issue the notification. mNotificationManager.notify(notifyID , notification);
或者如果您想要一个简单的修复,请使用以下代码:
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { mNotificationManager.createNotificationChannel(mChannel); }
更新: NotificationCompat.Builder 参考
NotificationCompat.Builder(Context context)
此构造函数在 API 级别 26.0.0 中已弃用,因此您应该使用
Builder(Context context, String channelId)
所以不需要setChannelId使用新的构造函数。
setChannelId
你应该使用目前最新的 AppCompat 库 26.0.2
compile "com.android.support:appcompat-v7:26.0.+"
来自Youtube 上的 Android 开发者频道
此外,您可以查看官方 Android 文档