Кнопки уведомления Android не отображаются
Это мой код для настройки уведомления с помощью кнопок.
Intent receiverIntent = new Intent(ctx, ResponsivePrefsActivity.class);
PendingIntent pReceiverIntent = PendingIntent.getActivity(ctx, 1, receiverIntent, 0);
Intent clearIntent = new Intent(ctx, ResponsivePrefsActivity.class);
clearIntent.setAction("clear");
PendingIntent pClearIntent = PendingIntent.getActivity(ctx, 1, clearIntent, 0);
Intent colorsIntent = new Intent(ctx, ResponsivePrefsActivity.class);
colorsIntent.setAction("colors");
PendingIntent pColorsIntent = PendingIntent.getActivity(ctx, 1, colorsIntent, 0);
Intent animationIntent = new Intent(ctx, ResponsivePrefsActivity.class);
animationIntent.setAction("animation");
PendingIntent pAnimation = PendingIntent.getActivity(ctx, 1, animationIntent, 0);
Notification.Builder builder;
builder = new Notification.Builder(ctx).setSmallIcon(R.drawable.ic_launcher).setAutoCancel(false)
.setContentTitle("Draw Me: A Live Wallpaper").setContentText("Never get bored again!")
.setContentIntent(pReceiverIntent).addAction(R.raw.ic_menu_close_clear_cancel, "Clear", pClearIntent)
.addAction(R.raw.ic_menu_edit, "Colors", pColorsIntent).addAction(R.raw.ic_menu_play_clip, "Animation", pAnimation);
Notification notification = builder.build();
NotificationManager notificationManager = (NotificationManager) ctx.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0, notification);
Появляется уведомление, но кнопки этого не делают. У моего устройства есть Android 4.1.1
Я установил это уведомление во Фрагменте. Что я делаю не так? Спасибо!
Ответы
Ответ 1
Позвольте мне рассказать вам кое-что, что действительно неудобно.
Если в вашем текущем уведомлении есть что-либо, вы не увидите кнопки.
Обычно это происходит, когда у вас есть телефон, подключенный к ПК через USB.
Надеюсь, что это решает вашу проблему.
Ответ 2
Просто напоминание для тех, кто имеет аналогичную проблему.
В соответствии с Android Руководство по уведомлениям уведомления могут отображаться в двух стилях:
- Обычный вид, в котором кнопки действий не отображаются по умолчанию (и пользователю необходимо развернуть уведомление, чтобы они появлялись)
- Большой вид, который отображается, если уведомление сначала в списке уведомлений, или пользователь расширил уведомление.
Поэтому, чтобы заставить уведомление появляться в Big View, все, что нам нужно сделать, это просто поместить его в верхнюю часть списка уведомлений. Это можно сделать, установив свойство "Когда" на 0, что делает его самым старым среди уведомлений! (Иногда, возможно, мы этого не хотим). Поэтому позвоните
setWhen(0)
к вашему уведомлению, и все готово.
Ответ 3
Кнопки не будут отображаться, если в списке присутствует любое текущее уведомление, например, управление медиаплеером или параметры переключателя IME, когда вы редактируете текст.
К счастью, это можно преодолеть, просто установив приоритет уведомления приятным и высоким. Я только использовал Notification.PRIORITY_MAX, чтобы обойти это, но PRIORITY_HIGH, похоже, тоже работает. Установите его так:
Notification notification = new Notification.Builder(myContext)
.setContentTitle(res.getString(R.string.my_title))
.setPriority(Notification.PRIORITY_MAX)
//The rest of your options
.build();
Ответ 4
Просто сделайте это:
.setPriority(Notification.PRIORITY_MAX)
.setWhen(0)
полный код:
Notification noti = new Notification.Builder(this)
.setContentTitle("New mail from " + "[email protected]")
.setContentText("Subject").setSmallIcon(R.drawable.ic_launcher)
.setContentIntent(pIntent)
.setPriority(Notification.PRIORITY_MAX)
.setWhen(0)
.addAction(R.drawable.ic_launcher, "Call", pIntent)
.addAction(R.drawable.ic_launcher, "More", pIntent)
.addAction(R.drawable.ic_launcher, "And more", pIntent).build();
Ответ 5
Просто выполните некоторые изменения, подобные этому в code
Notification n = new Notification.Builder(this)
.setSmallIcon(R.drawable.icon)
.setContentTitle("New mail from " + "[email protected]")
.setContentText("Subject")
.setContentIntent(pIntent).setAutoCancel(true)
.setStyle(new Notification.BigTextStyle().bigText(longText))
.build();
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
// Hide the notification after its selected
notificationManager.notify(0, n);
Добавьте, что вам нужно в этом.. Надеюсь, это поможет вам.