当前位置:   article > 正文

Android 9.0通知栏兼容8.0_android9.0 notifiction通知栏适配

android9.0 notifiction通知栏适配

如有不对的地方,望各路大神指导,小女子在此谢过(*^__^*) 嘻嘻……

最近遇到一个通知栏的问题,费了我一天多的时间,哎,小姐姐我也表示很苦啊

 

经测试我这个目前在 vivo,华为 8.0,9.0  都是没有问题的, 后续有问题,再继续更新

默认通知栏设置

1. 安卓 9.0 and 8.0 

主要是多了一个NotificationChannel的设置

NotificationChannel设置代码

  1. NotificationChannel channel = new NotificationChannel(context.getPackageName(), YOUR_CHANNEL_NAME, NotificationManager.IMPORTANCE_DEFAULT);
  2. channel.enableLights(true);
  3. channel.setLightColor(context.getResources().getColor(R.color.color_CCCCCC));
  4. channel.setShowBadge(true);
  5. channel.setDescription(context.getString(R.string.app_name));
  6. // 设置显示模式
  7. channel.setLockscreenVisibility(NotificationCompat.VISIBILITY_PUBLIC);
  8. notificationManager.createNotificationChannel(channel);
完整代码
  1. final Intent resultIntent = new Intent(context, BootActivity.class);
  2. resultIntent.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
  3. PendingIntent resultPendingIntent = PendingIntent.getActivity(
  4. context, 0, resultIntent,
  5. PendingIntent.FLAG_UPDATE_CURRENT);
  6. try {
  7. notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
  8. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
  9. //android 8.0 兼容9.0
  10. NotificationChannel channel = new NotificationChannel(context.getPackageName(), YOUR_CHANNEL_NAME, NotificationManager.IMPORTANCE_DEFAULT);
  11. channel.enableLights(true);
  12. channel.setLightColor(context.getResources().getColor(R.color.color_CCCCCC));
  13. channel.setShowBadge(true);
  14. channel.setDescription(context.getString(R.string.app_name));
  15. // 设置显示模式
  16. channel.setLockscreenVisibility(NotificationCompat.VISIBILITY_PUBLIC);
  17. notificationManager.createNotificationChannel(channel);
  18. builder = new NotificationCompat.Builder(context, context.getPackageName());
  19. //设置小图标
  20. builder.setSmallIcon(R.drawable.icon);
  21. builder.setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.drawable.icon));
  22. //设置优先级,低优先级可能被隐藏
  23. builder.setPriority(NotificationCompat.PRIORITY_HIGH);
  24. //设置通知时间,默认为系统发出通知的时间,通常不用设置
  25. builder.setWhen(System.currentTimeMillis());
  26. //设置通知栏能否被清楚,true不能被清除,false可以被清除
  27. builder.setOngoing(false);
  28. builder.setContentTitle("记账提醒");
  29. builder.setGroupSummary(true).setGroup(context.getString(R.string.app_name));
  30. builder.setContentText("记账时间到了,赶快记一笔");
  31. builder.setAutoCancel(true);//用户点击就自动消失
  32. builder.setChannelId(App.getContext().getPackageName());
  33. builder.setContentIntent(resultPendingIntent);
  34. builder.setPriority(NotificationCompat.PRIORITY_DEFAULT);
  35. builder.setDefaults(NotificationCompat.DEFAULT_ALL);
  36. builder.setCategory(Notification.CATEGORY_REMINDER);
  37. builder.setOnlyAlertOnce(true);
  38. notification = builder.build();
  39. } else {
  40. //其余版本
  41. builder = new NotificationCompat.Builder(context);
  42. //设置小图标
  43. builder.setSmallIcon(R.drawable.tip);
  44. //设置通知标题
  45. builder.setContentTitle("记账提醒");
  46. //设置通知类容
  47. builder.setContentText("记账时间到了,赶快记一笔");
  48. // 设置优先级,低优先级可能被隐藏
  49. builder.setPriority(NotificationCompat.PRIORITY_HIGH);
  50. //设置通知时间,默认为系统发出通知的时间,通常不用设置
  51. builder.setWhen(System.currentTimeMillis());
  52. //设置通知栏能否被清楚,true不能被清除,false可以被清除
  53. builder.setOngoing(false);
  54. builder.setAutoCancel(true);//用户点击就自动消失
  55. builder.setContentIntent(resultPendingIntent);
  56. notification = builder.build();
  57. }
  58. //发布通知
  59. notificationManager.notify(101, notification);
  60. } catch (Exception e) {
  61. e.printStackTrace();
  62. }

 

注意: 设置ICON的图片一定要够规范,最好就是使用app的log图片,(血泪教训啊,我就是设置的时候随便写了张,结果找了好久的才发现是你这个icon图片的原因)

不然会报错,

 Couldn't expand RemoteViews for

 

  

 

 

 

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/111449?site
推荐阅读
相关标签
  

闽ICP备14008679号