Я чувствую, что это должно быть тривиально, но я не могу показать уведомление на экране телефона – оно отображается только в строке состояния вверху.
Для примера того, что я хочу сделать, вот как Facebook Messenger появляется на экране, когда вы получаете сообщение.
Всякий раз, когда я отправляю уведомление, все, что он делает, показывает маленький значок в строке состояния – даже если я устанавливаю приоритет PRIORITY_MAX. Есть ли другой параметр, который мне нужно сделать, чтобы он отображался на экране, а не только в строке состояния?
Код отображения уведомлений:
PendingIntent contentIntent = PendingIntent.getActivity(context, nextId++, intent, PendingIntent.FLAG_CANCEL_CURRENT); Notification.Builder builder = new Notification.Builder(context) .setContentTitle(title) .setContentText(description) .setContentIntent(contentIntent) .setSmallIcon(R.drawable.ic_stat_notification) .setLargeIcon(largeIcon) .setPriority(Notification.PRIORITY_DEFAULT) .setAutoCancel(true) .setDefaults(Notification.DEFAULT_ALL); if (android.os.Build.VERSION.SDK_INT >= 21) { builder.setColor(context.getResources().getColor(R.color.orange_500)) .setVisibility(Notification.VISIBILITY_PUBLIC); } Notification notification = builder.build(); notificationManager.notify(id, notification);
Все, что считается, это действительно хорошая идея использовать NotificationCompat.Builder
над Notification.Builder
, не говоря уже о создании Notification
вручную. Это дает вам хорошую обратную совместимость с изящной деградацией (вплоть до уровня API 4, иначе известного как «gadzooks, это старый»). AFAIK, это единственный способ получить некоторые вещи Android Wear, когда они используются совместно с NotificationManagerCompat
. И в этом случае он, похоже, более счастлив с новыми функциями Android 5.0+.
В этом случае setPriority(NotificationCompat.PRIORITY_HIGH)
на NotificationCompat.Builder
, используемый с NotificationManagerCompat
, предоставит вам уведомление о хедз-ап на Android 5.0+.