Android GCM通知回退

Android GCM通知回退,android,notifications,push-notification,google-cloud-messaging,back-stack,Android,Notifications,Push Notification,Google Cloud Messaging,Back Stack,我在android上安装了GCM,并且能够正确接收通知。在通知中,我设置了“点击动作”,以便android在选择通知时为我打开一个特定的活动(ListActivity)。这一切都很好 但是,如果用户通过按back离开应用程序,当新活动启动(由gcm启动)时,整个back stack将丢失。这是我的android清单,也是我如何发送通知的示例 AndriodManifest.xml <activity android:name=".views.HomeActivity" an

我在android上安装了GCM,并且能够正确接收通知。在通知中,我设置了“点击动作”,以便android在选择通知时为我打开一个特定的活动(
ListActivity
)。这一切都很好

但是,如果用户通过按back离开应用程序,当新活动启动(由gcm启动)时,整个back stack将丢失。这是我的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>
是否可以让gcm为我自动创建后台堆栈?如果是这样的话,我怎样才能做到这一点呢?

我觉得这很有趣。看一看。我想这就是你要找的

要允许云消息打开应用程序并直接跳转到对讲机消息,我们需要获取发送给我们的意图数据。在应用程序启动活动(它将进入的第一个活动)中添加以下内容。您应该在活动生命周期的早期调用此方法,例如onCreate

Intercom.client().openGCMMessage(getIntent());
如果要为此通知创建自定义后台堆栈,可以将TaskStackBuilder传递给相同的方法:

openGCMMessage(Intent intent, TaskStackBuilder stackBuilder);

我找到的最简单的解决办法是覆盖

onCreateSupportNavigateUpTaskStack


在活动中

可以粘贴列表活动代码。或者您可以在listviewActivityHi@jigspatel中添加回事件,目前ListActivity为空。您好@Gerardimo,您建议的解决方案涉及使用对讲机,我想使用纯GCM。我相信机罩下的对讲机正在用TaskStackBuilder在抽屉中创建通知,这是我自己可以做的。我想要的是让GCM自动创建后台堆栈。就文档而言,我认为这是不可能的。如果这是GCM已经提供的功能,您至少应该能够在他们的文档中找到它。
openGCMMessage(Intent intent, TaskStackBuilder stackBuilder);