Android蜂窝上正在进行的通知具有不一致的行为

我有一个正在进行的下载文件的通知。 我已经成功创build了多个同时更新进度栏通知,也可以取消。 这在所有testing过的设备上都可以正常工作,除了一些最近使用Honeycomb的Android平板电脑。

现在的效果是,原始通知消息不断重新显示,阻止用户点击时钟来调出正在进行的通知列表。 因此,甚至没有进度栏。 有没有人成功地在Honeycomb上创build进度条通知?

作为一个方面,我也发现,我的黑色通知文本不再可读通知列表的黑色背景。 有没有为蜂窝设备设置白色文本的方法?

注意:这已经在运行Android 3.0.1和Motorola Xoom的Optimus Pad L-06C上进行了testing

以下是通知创build

// 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); 

Solutions Collecting From Web of "Android蜂窝上正在进行的通知具有不一致的行为"

要解决这个问题,你需要在你正在进行的通知上设置按位通知 .FLAG_ONLY_ALERT_ONCE。 这将确保用户在通知第一次显示时才被通知。 之后,他们将不得不打开通知盘来查看通知的状态。

 Notification notification = new Notification(); notification.flags |= Notification.FLAG_ONGOING_EVENT; notification.flags |= Notification.FLAG_ONLY_ALERT_ONCE; 

如果有人还在寻找,我觉得我发现这个问题。 问题是当你创build一个新的通知时,when被设置为当前系统时间。 如果你看看: http : //developer.android.com/reference/android/app/Notification.html#when你会看到下载操作应该在开始时加盖。 如果你没有(像我这样做),你有多个下载通知,他们将继续基于when字段重新sorting。

通知列表在GB上没有黑色背景; 只有状态栏变成了黑色。 什么设备造成麻烦? 你有没有在标准的GB上试过这个,以确保这不是特定于该设备的问题,而是在平台上改变的东西? 你知道这个设备是否与CDD兼容并通过了CTS?

为了解决这个问题(在4.0.3上,没有尝试在以前的API级别),我必须保留一个对Notification的引用,每次更改时更新它,然后将相同的Notification对象发送到NotificationManager.notify()

虽然我设置了@ twaddingtion的答案中指定的flags ,并发送相同的idNotificationManager我的通知被弄糟在SystemBar