8.0新增了一个NotificationChannel这个特性,在target >=26的情况下,会发现无法展示通知。
解决方案
public void showNotification(){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
String channelId = "chat";
String channelName = "chat message";
int importance = NotificationManager.IMPORTANCE_HIGH;
createNotificationChannel(channelId, channelName, importance);
}
Notification notification = new NotificationCompat.Builder(this, "chat")
.setContentTitle(title)
.setContentText(body)
.setCategory(NotificationCompat.CATEGORY_MESSAGE)
.setFullScreenIntent(null, true)
.setContentIntent(pendingIntentClick)
.setWhen(System.currentTimeMillis())
.setVisibility(Notification.VISIBILITY_PUBLIC)
.setSmallIcon(R.drawable.ic_launcher)
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher))
.setAutoCancel(true)
.build();
}
@RequiresApi(api = Build.VERSION_CODES.O)
private void createNotificationChannel(String channelId, String channelName, int importance) {
NotificationChannel channel = new NotificationChannel(channelId, channelName, importance);
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
manager.createNotificationChannel(channel);
}