Android 8.0通知栏适配_更新Android 8.0后系统通知栏
程序员文章站
2021-12-30 07:14:51
...
Android每次升级都会要我们更改一下代码来兼容新的特性,那么这次也不意外。在新的Android O,也就是Android 8.0下通知的发送又要做更改了,不然的话不能正常显示。Android通知栏在项目开发中,还是用的比较多的,一般是这三个步骤来做Android通知栏。
1、获取通知栏管理器对象
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
2、创建通知对象,并设置ui
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) { notificationBuilder = new Notification.Builder(UpdateService.this, "77"); }else{ notificationBuilder = new Notification.Builder(UpdateService.this); } notificationBuilder.setWhen(System.currentTimeMillis()) .setAutoCancel(false) .setContentTitle(app_name getString(R.string.is_downing)) .setProgress(100, 0, false) .setSmallIcon(android.R.drawable.stat_sys_download); Notification notification; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { notification = notificationBuilder.build(); } else { //noinspection deprecation notification = notificationBuilder.getNotification(); }
3、发送通知
mNotificationManager.notify(id,notification);
4、适配Android8.0(很重要,不然在Android 8.0下无法在通知栏发通知)
//兼容android8.0 if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) { NotificationChannel channel = new NotificationChannel("77", getString(R.string.down_sucess), NotificationManager.IMPORTANCE_DEFAULT); channel.enableLights(false); //是否在桌面icon右上角展示小红点 channel.setShowBadge(false); //是否在久按桌面图标时显示此渠道的通知 channel.enableVibration(false); channel.setSound(null, null); notificationManager.createNotificationChannel(channel); }
channelId为整数字符串,一定要和Notification.Builder(UpdateService.this, "77")里面的channelId一样才能发出通知哦,channelName最好使用汉字,因为通知栏上右滑出现设置按钮,点开设置按钮,可以看到这个通知channalName。