Я хотел бы показать уведомление, отображающее ход текущей операции . Это хорошо работает для меня. Но в то же время удаленный просмотр должен содержать кнопку отмены, чтобы остановить текущую операцию. Обычное намерение содержимого должно по-прежнему делать что-то еще, т. Е. Не отменять текущую операцию. Кажется, что у меня может быть только одно намерение.Ожидающие уведомления в уведомлениях
Я должен указать contentIntent, который запускается при нажатии на оповещение: Если я не указываю, что я получаю что-то вдоль этих линий :
E/ActivityManager( 62): Activity Manager Crash
E/ActivityManager( 62): java.lang.IllegalArgumentException: contentIntent required ...
Для кнопки «отмена» я установил другое намерение:
Intent cancelSyncIntent = new Intent("com.xyz.CANCEL_SYNC");
contentView.setOnClickPendingIntent(R.id.cancel_sync,
PendingIntent.getBroadcast(context, 0,
cancelSyncIntent, 0));
Но это никогда не работает. Я всегда получаю намерение содержимого, когда нажата кнопка . Похоже, я не могу использовать кнопки в удаленных представлениях уведомлений ?!
Возможно, я мог бы отобразить текст: «< < Нажмите, чтобы отменить операцию >>», но это выглядит довольно тяжело.
Update: Afer рекомендации Й.:
final Notification n = new Notification(R.drawable.gen_auto_notification_icon, context.getResources()
.getString(
fastSyncOnly ? R.string.fast_synchronization_running_notification_title
: R.string.synchronization_running_notification_title), new Date().getTime());
n.flags = Notification.FLAG_ONGOING_EVENT;
final RemoteViews contentView = new RemoteViews(context.getPackageName(), R.layout.in_progress_notification);
n.contentView = contentView;
// Intent cancelSyncIntent = new Intent("com.newsrob.CANCEL_SYNC");
Intent cancelSyncIntent = new Intent();
cancelSyncIntent.setClass(context, FireReceiver.class);
PendingIntent pendingCancelSyncIntent = PendingIntent.getActivity(context, 0, cancelSyncIntent, 0);
contentView.setOnClickPendingIntent(R.id.cancel_sync, pendingCancelSyncIntent);
Intent showDashboardIntent = new Intent(context, DashboardListActivity.class);
PendingIntent showDashboardPendingIntent = PendingIntent.getActivity(context, 0, showDashboardIntent, 0);
n.contentIntent = showDashboardPendingIntent;
Thanks J. Вы уверены, что это работает? Я пытаюсь, см. Выше, но все же, когда нажимаю на «Отмена», я получаю только showDashboardIntent. –