该通知在android 8或更高版本中不显示,但在android 8或更低版本中正常显示
这下面我尝试了
String code,code1,code2,title,message,image,urlImage;
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
kode = remoteMessage.getData().get("code");
kode1 = remoteMessage.getData().get("code1");
kode2 = remoteMessage.getData().get("code2");
title = remoteMessage.getData().get("title");
message = remoteMessage.getData().get("message");
image = remoteMessage.getData().get("image");
urlImage = remoteMessage.getData().get("image");
sendNotification_1(title,message, bitmap, code);
}
private void sendNotification_1(String title,String messageBody, Bitmap image, String kode){
Intent intent = new Intent(this, Home.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("directto", kode);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent,
PendingIntent.FLAG_ONE_SHOT);
Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
if(image != null){
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
.setLargeIcon(convertToBitmap())/*Notification icon image*/
.setSmallIcon(R.drawable.logostar)
.setContentTitle(title)
.setContentText(messageBody)
.setStyle(new NotificationCompat.BigPictureStyle()
.bigPicture(image))
.setAutoCancel(true)
.setSound(defaultSoundUri)
.setContentIntent(pendingIntent);
NotificationManager notificationManager =
(NotificationManager)
getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0 /* ID of notification */,
notificationBuilder.build());
}
}
在我的代码上方,那仍然无法在android 8或更高版本中使用
像大家一样建议我编辑的代码 但仍然不起作用
答案 0 :(得分:0)
需要通知频道
NotificationChannel mChannel = null;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
mChannel = new NotificationChannel(idChannel, context.getString(R.string.app_name), importance);
// Configure the notification channel.
mChannel.setDescription(context.getString(R.string.alarm_notification));
mChannel.enableLights(true);
mChannel.setLightColor(Color.RED);
mChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400});
mNotificationManager.createNotificationChannel(mChannel);
} else{
}
答案 1 :(得分:0)
从android8开始,需要与所有通知相关联的频道。
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O)
{
int importance = NotificationManager.IMPORTANCE_HIGH;
NotificationChannel notificationChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, "NOTIFICATION_CHANNEL_NAME", importance);
notificationChannel.enableLights(true);
notificationChannel.setLightColor(Color.RED);
notificationChannel.enableVibration(true);
notificationChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400});
assert mNotificationManager != null;
mBuilder.setChannelId(NOTIFICATION_CHANNEL_ID);
mNotificationManager.createNotificationChannel(notificationChannel);
}