关于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();