我在Android上设置了GCM,我能够正确接收通知。在通知中我设置了" click_action"这样android在选择通知时会为我打开一个特定的活动(ListActivity
)。这一切都很有效。
但是,如果用户通过向后按离开应用程序,则在启动新活动时(按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 :(得分:1)
我发现这个有趣website。看看Step 5。我认为这正是你要找的。 p>
要允许云消息打开应用并直接跳转到内部通信消息,我们需要将意图数据发送给我们。在您的应用启动活动(它将进入的第一个活动)中添加以下内容。您应该在Activity生命周期的早期调用此方法,例如onCreate。
Intercom.client().openGCMMessage(getIntent());
如果您希望为此通知创建自定义后台堆栈,您可以将TaskStackBuilder传递给相同的方法:
openGCMMessage(Intent intent, TaskStackBuilder stackBuilder);
答案 1 :(得分:0)
最简单的解决方案我发现是覆盖
活动中的onCreateSupportNavigateUpTaskStack