3

我有一項服務,顯示一條通知,希望每次用戶按下該按鈕時都能夠訪問我的應用程序的特定活動。通常這將是用戶顯示的最後一個,但並非總是如此。在Android中更改通知意圖

如果之前啓動了活動,它應該返回到它,如果沒有,它應該在應用程序的任務中打開它,並將其添加到活動任務中。

此外,在某些情況下,根據服務的邏輯,我希望更改通知的意圖,以便它將針對不同的活動。

我該怎麼做?是否有可能不創建一個新的通知和解僱前一個?沒有創建新任務或活動實例,是否也有可能?

+0

我總是嘗試。對不起,如果它不是這樣。 –

回答

1

不,一旦您發送通知,就不可能更改活動。

你可以開始你的任務堆棧上一個活動,是沒有問題的,在本教程這裏檢查出通知服務:

http://blog.blundell-apps.com/notification-for-a-user-chosen-time/

你必須設置的通知掛起的意圖:

 // The PendingIntent to launch our activity if the user selects this notification 
     PendingIntent contentIntent = PendingIntent.getActivity(this, 0, new Intent(this, SecondActivity.class), 0); 

     // Set the info for the view that shows in the notification panel. 
     notification.setLatestEventInfo(this, title, text, contentIntent); 

你可以看到掛起的意圖需要一個正常的意圖「new Intent(this, SecondActivity.class」所以,如果你想具體行爲(如把頂端,而不是開始一個新的活動。加入的標誌,就像您諾瑪適合這個意圖。即FLAG_ACTIVITY_REORDER_TO_FRONTsomething like that

+0

所以你說我不能修改通知的意圖?在新版本的Android上也有這種情況,它們有不同的方式來創建通知? –

+0

@androiddeveloper yes在發送給系統後,您無法對其進行修改。雖然你可以發送不同的通知,但這很好 – Blundell

+0

我明白了。如果不能這樣做,但在通知中更改視圖是可能的?我甚至看到一個應用程序在通知中顯示更新圖。肯定這是不可能的,因爲我認爲它的功能非常有限,就像appWidgets一樣。 –

0

由於平臺版本11,您可以使用Notification.Builder構建通知。 v4支持庫有一個等效的NotificationCompat.Builder類。

發送通知後,您無法更改活動,但可以使用新的Intent更新通知。當您創建PendingIntent時,請使用FLAG_CANCEL_CURRENT標誌。發送新通知時,請在調用NotificationManager.notify()時使用現有通知的ID。

此外,您應該小心如何啓動您的應用程序。狀態欄通知指南將告訴您如何設置後退堆疊。

+0

不知道我明白。你可以通過什麼方式改變通知的意圖?是否可以添加/修改該意圖的額外數據?你會如何去做任何你想要的活動?通過將活動的類名添加到額外的數據? –