2013-08-15 4 views
32

Это мой код для настройки уведомлений с помощью кнопок.Кнопки уведомления 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 Я установил это уведомление во Фрагменте. Что я делаю не так? Благодаря!

ответ

114

Позвольте мне сказать вам то, что на самом деле неудобно. Если у вас есть что-нибудь в своем текущем уведомлении, вы не увидите кнопки. Обычно это происходит, когда телефон подключен к ПК через USB. Надеюсь, что эта проблема решает проблемы

+7

Ответ года ....Я обвинил последнее обновление ОС, которое я сделал (4.2.2), но не является его прямым недостатком .... –

+2

Этот ответ заслуживает большего внимания! – Swayam

+17

отличный ответ. Я также обошел это, используя ответ @Captain Blammo, позвонив .setPriority (Notification.PRIORITY_MAX) в мой разработчик уведомлений. Таким образом, вы все еще можете видеть кнопки даже во время подключения через USB. – Jake

-1

Просто сделать некоторые изменения, как это в вашем 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); 

Добавить, что вам нужно в этом .. Я надеюсь, что это будет поможет вам ..

+0

У меня уже есть, что, как это можно увидеть. Мне не нужен метод setStyle, потому что мне нужны маленькие кнопки. Однако я узнал, что кнопки не показывались, когда планшет был подключен к компьютеру через USB. Когда я отключил планшет, появились кнопки. Это происходит на E-BODA Impresspeed E200 и Samsung Galaxy Note Tab 10.1 как с JB. Это просто сумасшествие, полдня впустую! Кто-нибудь еще получил эту проблему? – DraganescuValentin

+0

Это ошибка почти во всех устройствах Samsung для Android. Итак, вы не единственный, кто сталкивается с этой проблемой. Как обычно, Samsung нарушает функциональность Android с помощью TouchWiz crap! ... – ChuongPham

26

Просто напоминание для тех, кто имеет аналогичную проблему. В соответствии с Android Notifications Guide, уведомления могут появляться в двух стилях:

  • Normal View, где кнопки действий не появляются по умолчанию (и пользователь должен расширить уведомление, для того, чтобы они отобразились)
  • Большой вид, который отображается, если уведомление является первым в списке уведомлений, или пользователь расширил уведомление.

Поэтому, чтобы заставить уведомление появляться в режиме Big View, все, что нам нужно сделать, это просто разместить его в верхней части списка уведомлений. Это можно сделать, установив свойство «Когда» на 0, что делает его самым старым среди уведомлений! (Иногда, возможно, мы этого не хотим). Поэтому позвоните по телефону

setWhen(0) 

к вашему уведомлению, и все готово.

+7

Или даже лучше установить приоритет уведомления MAX! setPriority (Notification.PRIORITY_MAX) – vkolias

+1

Вы должны добавить это как ответ! Пусть добрый Господь благословит вас! – Swayam

+3

В итоге мне пришлось поставить оба 'setWhen (0)' и 'setPriority (MAX)' для этой работы в android 4.4 – Calin

21

Кнопки не отображаются, если в списке присутствует любое текущее уведомление, например, управление медиаплеером или параметры переключателя 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(); 
+0

Это работает только для api> = 16, btw –

16

Просто сделай это :::

.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(); 
Смежные вопросы