Android 9.0通知栏兼容8.0

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

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

 

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

默认通知栏设置

1. 安卓 9.0 and 8.0 

主要是多了一个NotificationChannel的设置

NotificationChannel设置代码

NotificationChannel channel = new NotificationChannel(context.getPackageName(), YOUR_CHANNEL_NAME, NotificationManager.IMPORTANCE_DEFAULT);
                channel.enableLights(true);
                channel.setLightColor(context.getResources().getColor(R.color.color_CCCCCC));
                channel.setShowBadge(true);
                channel.setDescription(context.getString(R.string.app_name));
                // 设置显示模式
                channel.setLockscreenVisibility(NotificationCompat.VISIBILITY_PUBLIC);
                notificationManager.createNotificationChannel(channel);
完整代码
 final Intent resultIntent = new Intent(context, BootActivity.class);
        resultIntent.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
        PendingIntent resultPendingIntent = PendingIntent.getActivity(
                context, 0, resultIntent,
                PendingIntent.FLAG_UPDATE_CURRENT);
        try {
            notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                //android 8.0 兼容9.0
                NotificationChannel channel = new NotificationChannel(context.getPackageName(), YOUR_CHANNEL_NAME, NotificationManager.IMPORTANCE_DEFAULT);
                channel.enableLights(true);
                channel.setLightColor(context.getResources().getColor(R.color.color_CCCCCC));
                channel.setShowBadge(true);
                channel.setDescription(context.getString(R.string.app_name));
                // 设置显示模式
                channel.setLockscreenVisibility(NotificationCompat.VISIBILITY_PUBLIC);
                notificationManager.createNotificationChannel(channel);
                builder = new NotificationCompat.Builder(context, context.getPackageName());
                //设置小图标
                builder.setSmallIcon(R.drawable.icon);
                builder.setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.drawable.icon));
                //设置优先级,低优先级可能被隐藏
                builder.setPriority(NotificationCompat.PRIORITY_HIGH);
                //设置通知时间,默认为系统发出通知的时间,通常不用设置
                builder.setWhen(System.currentTimeMillis());
                //设置通知栏能否被清楚,true不能被清除,false可以被清除
                builder.setOngoing(false);
                builder.setContentTitle("记账提醒");
                builder.setGroupSummary(true).setGroup(context.getString(R.string.app_name));
                builder.setContentText("记账时间到了,赶快记一笔");
                builder.setAutoCancel(true);//用户点击就自动消失
                builder.setChannelId(App.getContext().getPackageName());
                builder.setContentIntent(resultPendingIntent);
                builder.setPriority(NotificationCompat.PRIORITY_DEFAULT);
                builder.setDefaults(NotificationCompat.DEFAULT_ALL);
                builder.setCategory(Notification.CATEGORY_REMINDER);
                builder.setOnlyAlertOnce(true);
                notification = builder.build();
            } else {
                //其余版本
                builder = new NotificationCompat.Builder(context);
                //设置小图标
                builder.setSmallIcon(R.drawable.tip);
                //设置通知标题
                builder.setContentTitle("记账提醒");
                //设置通知类容
                builder.setContentText("记账时间到了,赶快记一笔");
                // 设置优先级,低优先级可能被隐藏
                builder.setPriority(NotificationCompat.PRIORITY_HIGH);
                //设置通知时间,默认为系统发出通知的时间,通常不用设置
                builder.setWhen(System.currentTimeMillis());
                //设置通知栏能否被清楚,true不能被清除,false可以被清除
                builder.setOngoing(false);
                builder.setAutoCancel(true);//用户点击就自动消失
                builder.setContentIntent(resultPendingIntent);
                notification = builder.build();
            }
            //发布通知
            notificationManager.notify(101, notification);
        } catch (Exception e) {
            e.printStackTrace();
        }

 

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

不然会报错,

 Couldn't expand RemoteViews for

 

  

 

 

 

 

 

 

 

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值