维护推送通知事件的父活动

时间:2016-05-10 09:53:01

标签: android push-notification google-cloud-messaging android-pendingintent

我有活动A(启动活动),活动B(家庭活动),活动C(提供活动),活动D(杂项活动)。我想在两种情况下创建适当的Landings to Offers活动:

一般App流程: 活动A->活动B - >活动C->活动D

方案A :关闭应用程序时。 (任务管理器中不存在) 要求:点击推送通知,我希望用户应直接登陆活动C(优惠活动)。我想要点击后退按钮,用户不应退出应用程序,而应该能够看到活动A,然后从A点击后退,他应该退出。 当前场景:现在,当通知登陆时,点击它,用户登陆到活动C(这是正确的),但是当从该屏幕点击返回时,用户直接退出应用程序。为什么会这样?这是我的父亲活动堆栈代码

          <activity
            android:name=".OffersActivity"
            android:screenOrientation="portrait"
            android:theme="@style/AppTheme"
            android:windowSoftInputMode="stateHidden">
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="com.zotopay.zoto.HomeActivity" />
         </activity>


         <activity
            android:name=".HomeActivity"
            android:screenOrientation="portrait"
            android:windowSoftInputMode="adjustPan"
            android:theme="@style/AppTheme"
            >
         </activity>


  defaultConfig {
        applicationId "com.zotopay.zoto"
        minSdkVersion 14
        targetSdkVersion 22
        versionCode 1310145
        versionName "1.4.5"
    }

推送通知登陆代码:

            Intent resultIntent = new Intent(this, OffersActivity.class);
            TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
            // All the parents of OffersActivity will be added to task stack.
            stackBuilder.addParentStack(OffersActivity.class);
            // Add a SecondActivity intent to the task stack.
            stackBuilder.addNextIntent(resultIntent);

            PendingIntent contentIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);

任何人都可以让我知道我做错了什么?因为当我从优惠活动回来而不是登陆HomeActivity时,我会退出应用程序。

1 个答案:

答案 0 :(得分:1)

尝试这个接收器我定制并正常工作。

public class PushWooshManager extends BroadcastReceiver
{
public void onReceive(Context context, Intent intent)
{
    if (intent == null)
        return;

    Bundle pushBundle = PushManagerImpl.preHandlePush(context, intent);
    if(pushBundle == null)
        return;
    JSONObject dataObject = PushManagerImpl.bundleToJSON(pushBundle);

    Intent launchIntent  =new Intent(MyApplication.getInstance().getApplicationContext(),YourDesired.class);
    launchIntent.addCategory("android.intent.category.DEFAULT");
    launchIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
    launchIntent.putExtras(pushBundle);
    launchIntent.putExtra(PushManager.PUSH_RECEIVE_EVENT, dataObject.toString());
    context.startActivity(launchIntent);

    PushManagerImpl.postHandlePush(context, intent);
}
}

在你的pushwoosh面板中manifest.xml尝试使用WOOSH注册。