У меня есть постоянное уведомление о загрузке файлов в фоновом режиме. Мне удалось создать несколько одновременных уведомлений об обновлении индикатора выполнения, которые также можно отменить. Это прекрасно работает на всех протестированных устройствах, за исключением некоторых последних Android-планшетов с Honeycomb.
Эффект заключается в том, что исходное сообщение уведомления постоянно отображается повторно, что не позволяет пользователю щелкнуть часы, чтобы открыть список текущих уведомлений. Таким образом, индикаторы выполнения даже не видны. Кому-нибудь удалось по существу создать уведомления индикатора выполнения на Honeycomb?
Кроме того, я также обнаружил, что мой черный текст уведомлений больше не читается на черном фоне списка уведомлений. Есть ли способ установить белый текст для сотовых устройств?
Примечание. Это было протестировано на Optimus Pad L-06C под управлением Android 3.0.1 и Motorola Xoom.
Ниже показано создание уведомления
// Create new notification for downloading
mNotification = new Notification(R.drawable.owl_icon, getNotificationText(R.string.notification_content_downloading), 0);
mNotification.flags |= (Notification.FLAG_NO_CLEAR | Notification.FLAG_ONGOING_EVENT);
// Create custom progress bar view
RemoteViews contentView = new RemoteViews(CourseSyncService.this.getPackageName(), R.layout.notification_downloading);
contentView.setTextViewText(R.id.notificationTitle, mCourseTitle);
contentView.setProgressBar(R.id.notificationProgressBar, 100, 0, false);
contentView.setTextViewText(R.id.notificationPercentage, "0%");
mNotification.contentView = contentView;
// Create pending intent for the notification
Intent notificationIntent = new Intent(CourseSyncService.this, CancelDownloadActivity.class);
notificationIntent.putExtra(CourseSyncService.KEY_USER_ID, mUserId);
notificationIntent.putExtra(CourseSyncService.KEY_COURSE_ID, mCourseId);
notificationIntent.putExtra(CourseSyncService.KEY_COURSE_TITLE, mCourseTitle);
PendingIntent contentIntent = PendingIntent.getActivity(CourseSyncService.this, mCourseId, notificationIntent, PendingIntent.FLAG_CANCEL_CURRENT);
mNotification.contentIntent = contentIntent;
// Launch notification
mNotificationManager.notify(mCourseId, mNotification);
И вот как я обновляю уведомление:
// Update the progress bar of the notification view
mNotification.contentView.setProgressBar(R.id.notificationProgressBar, mItemCount, mProgressCount, false);
mNotification.contentView.setTextViewText(R.id.notificationPercentage, String.valueOf(mProgress) + "%");
mNotificationManager.notify(mCourseId, mNotification);