也许这个问题比我预期的要简单:我希望显示notification
,在onCreate
的{{1}}函数内创建(出于调试原因)。< / p>
Activity
,Api lvl 23(支持旧设备)并在具有Api lvl 27的Nexus5设备上运行。
显示通知的代码:
Android Studio 3.0.1
这表明不推荐使用仅包含上下文的 PendingIntent pi = PendingIntent.getActivity(this, 0, new Intent(this, MainActivity.class), 0);
Notification notification = new NotificationCompat.Builder(this)
.setTicker("SomethingTicker")
.setSmallIcon(R.drawable.someImage)
.setContentTitle("SomeTitle")
.setContentText("SomeText")
.setContentIntent(pi)
.build();
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
notificationManager.notify(001, notification);
。我应该在较新版本中使用通知频道。
问题:要创建并注册NotificationChannel,我必须使用api lvl&gt; 27。
我错过了什么?什么是最好的方式
答案 0 :(得分:3)
我想显示在Activity的onCreate函数中创建的通知。
请注意,这是显示Notification
的奇怪时间。
我错过了什么?
您需要使用代码创建仅在Android 8.0+设备上运行的NotificationChannel
:
NotificationManager mgr=
(NotificationManager)getSystemService(NOTIFICATION_SERVICE);
if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.O &&
mgr.getNotificationChannel(CHANNEL_WHATEVER)==null) {
mgr.createNotificationChannel(new NotificationChannel(CHANNEL_WHATEVER,
"Whatever", NotificationManager.IMPORTANCE_DEFAULT));
}
然后,对于所有API级别,将您的频道标识符(此处为CHANNEL_WHATEVER
)传递给NotificationCompat.Builder
构造函数。在旧设备上,频道将被忽略。