Я хотел бы показать уведомление, которое отображает прогресс
текущая операция. Это хорошо работает для меня.
Но в то же время удаленный просмотр должен содержать кнопку отмены, чтобы остановить текущую операцию. Обычный контент намерения все еще должен делать что-то еще, то есть не отменять текущую операцию. Кажется, что у меня может быть только одно намерение.
Я должен указать 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));
Но это никогда не работает. Я всегда получаю контент, когда кнопка
нажата. Похоже, я не могу использовать кнопки в удаленных видах
уведомления?!
Возможно, я мог бы отобразить текст: «<< Нажмите, чтобы отменить операцию >>», но это выглядит довольно тяжело.
Обновление: рекомендации Afer J.:
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;