2010-08-08 76 views
0

有沒有辦法讓Notification的發件人知道何時將Notification發送給接收器?即某些方法可以檢查用戶是否點擊了給定的NotificationAndroid:如何檢查是否發送了待處理的通知?

我想要完成的是:我的Service發送一個通知PendingIntent啓動ActivityA。但是,如果用戶在未點擊通知的情況下啓動ActivityA,我希望該服務取消Notification並將直接意向發送給活動A

回答

1

您的流程對我來說沒有多大意義。如果用戶打開ActivityA,爲什麼要打開另一個ActivityA實例?我不確定還有什麼「向ActivityA發送直接Intent」意味着什麼。我認爲在所有情況下,ActivityA都會取消Notification,並在所有情況下向服務部門提供最新數據。

如果這種模式不適合你,那麼讓你的Notification使用服務PendingIntent。請注意,用戶點擊了Notification,然後讓服務啓動ActivityA。這給用戶帶來了同樣的效果(點擊通知,獲取ActivityA),但是你的服務發現了有關點擊的信息。

或者,在活動PendingIntent中使用Intent,該活動與ActivityA通常以其開頭的Intent不同。有ActivityA告訴服務,「喲,我在所有情況下都會給我一個Intent,喲」。如果服務提出了Notification並且ActivityA指示它從常規Intent開始,則請告知ActivityA執行某些操作。如果服務提出了Notification,並且ActivityA指示它開始於NotificationIntent,請執行其他操作。

+0

要澄清,如果ActivityA已打開,服務將不會打開另一個ActivityA實例(假設它爲StartActivity意圖設置正確的標誌)。 當ActivityA已處於活動狀態時,「直接意圖」是指sendBroadcast()到ActivityA。 通過服務服務「注意到」用戶點擊了通知,是否將PendingIntent設置爲服務本身? – theactiveactor 2010-08-10 02:32:51

+0

「A」直接意圖「當ActivityA已處於活動狀態時表示sendBroadcast()給ActivityA」活動不聽廣播。不過,一個活動可以動態註冊一個BroadcastReceiver。 「通過服務服務」注意到用戶點擊了通知,是否將PendingIntent設置爲服務本身?「我不知道這句話的意思,對不起。 – CommonsWare 2010-08-10 12:25:57

相關問題