关于Android8.0任务栏显示通知

关于Android任务栏通知显示,升级8.0后按照之前的写法是不能成功显示的,Android 8.0新加了一个CHANNEL变量,取值一般为你App的包名。解决方案如下:

首先,需要判断版本,创建CHANNEL:
 private NotificationManager manager;
 private String notifChannel;

manager = (NotificationManager) UlifeplusApp.app.getSystemService(Context.NOTIFICATION_SERVICE);//管理类
notifChannel = UlifeplusApp.app.getPackageName();//获取自己APP包名

 if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
            NotificationChannel channel = new NotificationChannel(
                    notifChannel,
                    notifChannel,
                    NotificationManager.IMPORTANCE_DEFAULT
            );
            manager.createNotificationChannel(channel);
        }
然后获取Notification.Builder
 NotificationCompat.Builder builder = new NotificationCompat.Builder(context,notifChannel);
        builder.setContentTitle(title);// app 名称
        builder.setContentText(message);//推送内容
        builder.setTicker(ticker);//设置发送到辅助功能服务的“ticker”文本。
        builder.setWhen(System.currentTimeMillis());//时间
        builder.setPriority(Notification.PRIORITY_DEFAULT);//设置此通知的相对优先级
        builder.setOngoing(false);//设置这是否是正在进行的通知。
        builder.setDefaults(Notification.DEFAULT_SOUND);//设置即将被使用的默认通知选项
        builder.setLargeIcon(BitmapFactory.decodeResource(context.getResources(),   //设置滚动条和通知的大图标R.drawable.app_logo));//图片
        builder.setSmallIcon(R.drawable.app_logo_notification);//设置小图标
        builder.setContentIntent(pendingIntentClick); // 点击时间监听
        builder.setDeleteIntent(pendingIntentCancel); //设置该条目删除监听  
        builder.setChannelId(notifChannel);//指定停止应传递到的通道,上面获取的notifChannel
        Notification notification = builder.build();

你可能感兴趣的:(关于Android8.0任务栏显示通知)