Intereting Posts

Android – удалить кнопку действия из уведомления

Когда вы нажимаете на эти кнопки действий, я хочу отклонить кнопки действия уведомления (не все уведомления). (Скажем: уведомление о загрузке с кнопкой остановки действия. Когда вы нажмете кнопку «Стоп», отпустите кнопку «Стоп» и измените contentText на «Загрузить отменено»)

Единственное, что мне пришло в голову – это отменить уведомление и уведомить другого с тем же идентификатором, но это кажется уродливым обходным решением …

Итак, есть ли способ удалить кнопки действий из уведомлений?

(Я думаю, что нет необходимости вводить какой-либо код, но я буду, если его необходимо …)

Solutions Collecting From Web of "Android – удалить кнопку действия из уведомления"

Если вы используете NotificationCompat.Builder из библиотеки поддержки v4, вы можете просто получить доступ к сборке действий строителя напрямую (к сожалению, публичные мутаторы не предоставляются).

Следующее выполнит трюк (конечно, вы должны обновить повторное уведомление):

NotificationCompat.Builder notifBuilder = NotificationCompat.Builder(context); ... notifBuilder.mActions.clear(); 

У меня была та же проблема, и я нашел решение для этого. Я создал еще один строитель и добавил два «пустых» действия:

 builder.addAction(0, null, null); builder.addAction(0, null, null); 

(По одной для каждой кнопки у меня было, поэтому, если у вас их три, назовите ее три раза).

Затем при вызове Notify он удаляет кнопки.

Я использую следующее обходное решение:

 NotificationCompat.Builder builder = //existing instance of builder //... try { //Use reflection clean up old actions Field f = builder.getClass().getDeclaredField("mActions"); f.setAccessible(true); f.set(builder, new ArrayList<NotificationCompat.Action>()); } catch (NoSuchFieldException e) { // no field } catch (IllegalAccessException e) { // wrong types } 

Отсюда: https://code.google.com/p/android/issues/detail?id=68063

Android предоставляет зону уведомлений для предупреждения пользователей о произошедших событиях. Он также предоставляет ящик уведомлений, который пользователь может вытащить, чтобы просмотреть более подробную информацию об уведомлении.

Ящик уведомлений состоит из

  • Просмотр (содержит символ, деталь, маленький значок)
  • Действие (любое действие, которое может произойти в случае, если пользователь нажимает вид ящика уведомлений)

Чтобы настроить уведомление, чтобы его можно было обновить, введите его с идентификатором уведомления, вызвав NotificationManager.notify (ID, уведомление). Чтобы обновить это уведомление после его выпуска, обновите или создайте объект NotificationCompat.Builder, создайте из него объект Notification и выпустите уведомление с тем же идентификатором, который вы использовали ранее.

 mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); // Sets an ID for the notification, so it can be updated int notifyID = 1; mNotifyBuilder = new NotificationCompat.Builder(this) .setContentTitle("New Message") .setContentText("You are downloading some image.") .setSmallIcon(R.drawable.ic_stop) numMessages = 0; // Start of a loop that processes data and then notifies the user ... mNotifyBuilder.setContentText("Download canceled") .setNumber(++numMessages); // Because the ID remains unchanged, the existing notification is // updated. mNotificationManager.notify( notifyID, mNotifyBuilder.build()); ...