android 8.0 以后的版本,在创建通知栏的时候,加了一个channelId的东西。要想在上述版本中显示通知,总共分两步
1.创建Channel
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { String channelId = "whatever"; //根据业务执行 String channelName = "whatever conent"; //这个是channelid 的解释,在安装的时候会展示给用户看 int importance = NotificationManager.IMPORTANCE_HIGH; createNotificationChannel(channelId, channelName, importance); }
2.引用
Notification notification = new Notification.Builder(this,"whatever") //引用加上channelid .setSmallIcon(R.drawable.donkey) .setWhen(System.currentTimeMillis()) .setContentTitle("随便") .setContentText("随随便便写") .setContentIntent(pendingIntent) .build();
为了兼容android所有版本,最好在代码里做一下适配
manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); Intent intent = new Intent(this, AudioPlayerActivity.class); intent.putExtra("Notifiction",true); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { String channelId = "whatever"; //根据业务执行 String channelName = "whatever conent"; //这个是channelid 的解释,在安装的时候会展示给用户看 int importance = NotificationManager.IMPORTANCE_HIGH; createNotificationChannel(channelId, channelName, importance); } PendingIntent pendingIntent = PendingIntent.getActivity(this,1,intent,PendingIntent.FLAG_UPDATE_CURRENT); Notification notification = null; if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){ notification = new Notification.Builder(this,"whatever") //引用加上channelid .setSmallIcon(R.drawable.donkey) .setWhen(System.currentTimeMillis()) .setContentTitle("随便") .setContentText("随随便便写") .setContentIntent(pendingIntent) .build(); }else{ notification = new Notification.Builder(this) .setSmallIcon(R.drawable.donkey) .setWhen(System.currentTimeMillis()) .setContentTitle("随便") .setContentText("随随便便写") .setContentIntent(pendingIntent) .build(); } manager.notify(1,notification);