2

我在android上設置了GCM,並且能夠正確接收通知。在通知中,我設置了「click_action」,以便Android在選擇通知時爲我打開特定活動(ListActivity)。這一切都很好。Android GCM通知Backstack

但是,如果用戶通過後退離開應用程序,當新活動啓動時(按gcm),整個後退堆棧丟失。這是我的Android清單,也是我發送通知的一個例子。

AndriodManifest.xml

<activity 
    android:name=".views.HomeActivity" 
    android:label="@string/app_name" 
    android:screenOrientation="portrait" 
    android:theme="@style/AppTheme.NoActionBar"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN"/> 
     <category android:name="android.intent.category.LAUNCHER"/> 
    </intent-filter> 
</activity> 

<activity 
    android:name=".views.ListActivity" 
    android:parentActivityName=".views.HomeActivity" 
    android:screenOrientation="portrait"> 
    <intent-filter> 
     <action android:name="OPEN_ACTIVITY_LIST"/> 
     <category android:name="android.intent.category.DEFAULT"/> 
    </intent-filter> 
    <meta-data 
     android:name="android.support.PARENT_ACTIVITY" 
     android:value=".views.HomeActivity"/> 
</activity> 

通知例如

curl -X POST https://gcm-http.googleapis.com/gcm/send \ 
-H "Content-Type:application/json" \ 
-H "Authorization:key=AUTHORIZATION_KEY" \ 
-d '{ 
    "to" : "GCM_TOKEN", 
    "priority" : "high", 
    "notification" : { 
    "body" : "Notification body", 
    "title" : "Notification Title", 
    "click_action": "OPEN_ACTIVITY_LIST" 
    }, 
    "data": { 
    "message": "Please open an activity with a backstack configured!" 
    } 
}' 

是否有可能有GCM爲我自動創建後退堆棧?如果是這樣,我該如何做到這一點?

+0

你可以粘貼你的ListActivity代碼。或者你可以在listviewActivity中加入Back Event – jigspatel

+0

Hi @jigspatel,目前ListActivity是空的。 – Fernando

回答

1

我發現這個有趣的website。看看Step 5。我認爲這是你正在尋找的。

要允許雲消息打開應用程序並直接跳到對講消息,我們需要獲取發送給我們的意向數據。在您的應用程序啓動活動中(它將進行的第一項活動)添加以下內容。您應該在Activity生命週期的早期調用此方法,例如onCreate。

Intercom.client().openGCMMessage(getIntent()); 

如果你想創建一個自定義回此通知棧可以傳遞TaskStackBuilder同樣的方法:

openGCMMessage(Intent intent, TaskStackBuilder stackBuilder); 
+0

您好@gerardnimo,您建議的解決方案涉及使用Intercom,我想純粹使用GCM。我相信,Intercom正在使用TaskStackBuilder在抽屜中創建通知,這是我自己可以做的事情。我想要的是讓GCM自動創建後端堆棧。 – Fernando

+0

就文件而言,我認爲這是不可能的。如果它是一個已經可用於GCM的功能,您應該至少能夠在他們的文檔中找到它。 – gerardnimo

0

我發現最簡單的辦法是重寫

onCreateSupportNavigateUpTaskStack

在活動