Я успешно создал настраиваемое расширенное уведомление для Android> = 3.0, в котором отображается текст и дополнительная кнопка. Если щелкнуть уведомление в любом месте, кроме кнопки в раскрывающемся списке уведомлений, уведомление будет отклонено, раскрывающийся список закроется, и указанное намерение будет запущено, как ожидается.
Если щелкнуть специальную кнопку в уведомлении, успешно запускается другое намерение, но раскрывающийся список остается открытым (и уведомление все еще там, но я отменяю его позже, это не проблема). Намерение запускает действие, которое появляется за раскрывающимся списком уведомлений.
Чего я хотел бы добиться, так это сохранить все текущее поведение, как описано, но также закрыть раскрывающийся список уведомлений из намерения, которое запускает кнопка - возможно ли это? В качестве альтернативы было бы достаточно, если бы действие от кнопки Intent получило фокус окна.
Вот код для пользовательского уведомления, если это поможет:
Notification.Builder builder = new Notification.Builder(main)
.setSmallIcon(R.drawable.notification)
.setAutoCancel(true)
.setTicker(text)
.setContentIntent(...);
RemoteViews layout = new RemoteViews(
main.getPackageName(), R.layout.notification);
layout.setTextViewText(R.id.title, title);
layout.setTextViewText(R.id.text, text);
Intent i = new Intent(
"snooze", null, main, Snooze.class
);
i.putExtra(KEY_WIDGET_ID, widgetId);
layout.setOnClickPendingIntent(R.id.notification_zzz, PendingIntent.getActivity( main, 0, i, PendingIntent.FLAG_UPDATE_CURRENT ));
builder.setContent(layout);
...
NotificationManager nm =
(NotificationManager)main.getSystemService(Context.NOTIFICATION_SERVICE);
nm.notify(0, builder.getNotification());