通知栏适配

public class NotificationHelper {
    private static final String CHANNEL_ID="channel_id";   //通道渠道id
    public static final String  CHANEL_NAME="chanel_name"; //通道渠道名称

    @TargetApi(Build.VERSION_CODES.O)
    public static  void  show(Context context){
        NotificationChannel channel = null;
        if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.O){
            //创建 通知通道  channelid和channelname是必须的(自己命名就好)
            channel = new NotificationChannel(CHANNEL_ID, CHANEL_NAME, NotificationManager.IMPORTANCE_DEFAULT);
            channel.enableLights(true);//是否在桌面icon右上角展示小红点
            channel.setLightColor(Color.GREEN);//小红点颜色
            channel.setShowBadge(false); //是否在久按桌面图标时显示此渠道的通知
        }
         Notification notification;
        //获取Notification实例   获取Notification实例有很多方法处理    在此我只展示通用的方法(虽然这种方式是属于api16以上,但是已经可以了,毕竟16以下的Android机很少了,如果非要全面兼容可以用)
        if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.O){
            //向上兼容 用Notification.Builder构造notification对象
            notification = new Notification.Builder(context,CHANNEL_ID)
                    .setContentTitle("通知栏标题")
                    .setContentText("这是消息通过通知栏的内容")
                    .setWhen(System.currentTimeMillis())
                    .setSmallIcon(R.drawable.ic_small)
                    .setColor(Color.parseColor("#FEDA26"))
                    .setLargeIcon(BitmapFactory.decodeResource(context.getResources(),R.mipmap.ic_cpu))
                    .setTicker("巴士门")
                    .build();
        }else {
            //向下兼容 用NotificationCompat.Builder构造notification对象
            notification = new NotificationCompat.Builder(context)
                    .setContentTitle("通知栏标题")
                    .setContentText("这是消息通过通知栏的内容")
                    .setWhen(System.currentTimeMillis())
                    .setSmallIcon(R.drawable.ic_small)
                    .setColor(Color.parseColor("#FEDA26"))
                    .setLargeIcon(BitmapFactory.decodeResource(context.getResources(),R.mipmap.ic_cpu))
                    .setTicker("巴士门")
                    .build();
        }
        //发送通知
        int  notifiId=1;
        //创建一个通知管理器
        NotificationManager notificationManager= (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.O){
           notificationManager.createNotificationChannel(channel);
        }
        notificationManager.notify(notifiId,notification);
    }
}

android8.0通知栏适配要求必须设置通道,即

notificationManager.createNotificationChannel(channel);

并且构建通知对象时,必须指定channelId:

notification = new Notification.Builder(context,CHANNEL_ID)
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Notification,是一种具有全局效果的通知,可以在系统的通知栏中显示。当 APP 向系统发出通知时,它将先...
    蓦然恨阅读 10,693评论 9 29
  • 为什么要进行通知栏适配?现在经常是早上一觉醒来拿起手机一看,通知栏上全是各种APP的推送,烦。随着智能手机发展的成...
    as_pixar阅读 923评论 0 2
  • 不得不说,通知栏是一个让人喜欢又让人头疼的功能。我个人是一名android手机资深者,每次使用安装新的应用程序,我...
    阴天吃鱼阅读 2,404评论 5 29
  • 目录 前言 Android8.0系统对通知栏做了改动,要求实现通知必须得创建相应的channel,每个channe...
    itfitness阅读 643评论 0 5
  • 撕开一层又一层,绷带纱布 纱布是黑的,黑色的血浸透凝固 剪刀重新剪开伤口,涂抹白药消毒 无数黑蝴蝶飞出来,吮吸花盘...
    忠志_3d7b阅读 143评论 0 3

友情链接更多精彩内容