9

我有一個正在進行的後臺下載文件的通知。我已成功創建多個同時更新進度欄通知,這些通知也可以取消。這在所有測試設備上都能正常工作,除了一些最近使用Honeycomb的Android平板電腦。Android蜂窩上的持續通知具有不一致的行爲

現在,原始通知消息不斷重新顯示,防止用戶點擊時鐘以顯示正在進行的通知列表。因此,甚至沒有看到進度條。有沒有人成功地在Honeycomb上創建進度條通知?

作爲一方,我還發現我的黑色通知文本在通知列表的黑色背景中不再可讀。有沒有爲蜂窩設備設置白色文本的方法?

注:這一問題已經在運行Android 3.0.1的擎天柱墊L-06C和摩托羅拉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); 
+1

通知(ID,通知)有文檔指出在同一個ID上通知「將被更新的信息替換」。似乎Honeycomb增加了一個可怕的重新顯示,在以前的版本沒有發生。 – Rene 2011-08-07 19:19:55

+1

恭喜超過1500!我的投票推動了你的邊緣......但主要是感謝問這個問題,我有同樣的問題,並修復了這個問題。 – JPM 2012-03-22 22:53:13

+0

嗚呼!謝謝! – Chase 2012-03-23 00:07:35

回答

7

要解決此問題,您需要在正在進行的通知中設置按位Notification.FLAG_ONLY_ALERT_ONCE。這將確保只有在第一次顯示通知時纔會通知用戶。之後,他們將不得不打開通知盤以查看通知的狀態。

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

你是我的英雄!如果您希望每次發送通知時都播放聲音和/或振動,即使在此之前沒有取消聲音,該標誌上的註釋也會顯示「Bit要按位進入應設置的標誌字段。」所以這可能是爲什麼我從來沒有嘗試過使用它。謝謝! – Chase 2011-08-26 08:11:44

+0

這似乎不適用於我... NexusS 4.0.3 – 2012-06-20 15:31:59

0

通知列表在GB上沒有黑色背景;只有狀態欄變爲黑色。什麼設備造成麻煩?你有沒有在標準GB上試過這個,以確保這不是特定於該設備的問題,而是在平臺上發生了變化?你知道這個設備是否與CDD兼容並通過了CTS?

+0

我知道我應該提到這個模型。我目前正在使用運行Android 3.0.1的Optimus Pad L-06C。我沒有用任何其他設備進行測試,但只要我拿到一個手就可以了。我不太清楚這個設備是否符合CDD標準。我將用相關信息更新問題。謝謝。 – Chase 2011-06-06 05:55:39

+0

另外,我錯誤地把薑餅,當我的意思是蜂窩。我現在已經在兩臺設備上驗證了這一點。 – Chase 2011-06-08 09:57:03

+1

是的,作爲Android 3.0新UI的一部分,背景發生了變化。這個堆棧溢出的答案應該有所幫助:http://stackoverflow.com/questions/4867338/custom-notification-layouts-and-text-colors – hackbod 2011-06-23 16:33:58

0

爲了解決這個問題(在4.0.3,以前的API水平沒有嘗試),我不得不引用保持我Notification,每次有變化時更新它,然後發送相同Notification對象NotificationManager.notify()

Altough我設置了flags在@ twaddingtion的回答指定的,發送相同idNotificationManager我通知了在SystemBar越來越混亂。