【发布时间】:2019-03-09 18:54:23
【问题描述】:
在 Android 9.0 上不显示通知,在 8 及更低版本上运行良好。 我在使用旧代码时遇到了问题,我读到需要在新的 android 版本上通过 Channel,我从互联网上获得了此代码,但仍然无法在 Android 9.0 上运行。我不知道为什么。 任何帮助将不胜感激。
当我通过互联网阅读时,一切看起来都很好。但没有显示通知。
private void showSmallNotification( int icon, String title, String message, String timeStamp, PendingIntent resultPendingIntent){
String CHANNEL_ID = Constants.ChannelID;
String CHANNEL_NAME = "Notification";
NotificationManager notificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);;
NotificationCompat.Builder notification;
NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle();
inboxStyle.addLine(message);
if (Build.VERSION.SDK_INT >= 26) {
NotificationChannel channel = new NotificationChannel(CHANNEL_ID, CHANNEL_NAME, NotificationManager.IMPORTANCE_HIGH);
channel.enableVibration(true);
channel.setLightColor(Color.BLUE);
channel.enableLights(true);
channel.setSound(Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + getApplicationContext().getPackageName() + "/" + R.raw.notification),
new AudioAttributes.Builder()
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.setUsage(AudioAttributes.USAGE_NOTIFICATION)
.build());
channel.canShowBadge();
notificationManager.createNotificationChannel(channel);
notification = new NotificationCompat.Builder(getApplicationContext(), CHANNEL_ID);
} else {
notification = new NotificationCompat.Builder(getApplicationContext(),CHANNEL_ID);
}
notification
.setVibrate(new long[]{0, 100})
.setPriority(Notification.PRIORITY_MAX)
.setLights(Color.BLUE, 3000, 3000)
.setAutoCancel(true)
.setContentTitle(title)
.setContentIntent(resultPendingIntent)
.setWhen(getTimeMilliSec(timeStamp))
.setSmallIcon(R.mipmap.ic_launcher)
.setStyle(inboxStyle)
.setLargeIcon(BitmapFactory.decodeResource(this.getResources(), icon))
.setContentText(message)
.build();
notificationManager.notify(CHANNEL_ID, 1, notification.build());
}
【问题讨论】:
标签: android notifications android-notifications android-9.0-pie notificationmanager