需要打开后按Android上的家庭活动

时间:2020-02-17 09:56:47

标签: android android-activity

通常情况下,我有一个活动堆栈,即A-> B-> C,当我收到推送通知并实现了click_action时,它会打开正确的活动C。

现在,需要做的是,当活动C从按下后退按钮后的推送通知中打开时,它关闭并且整个应用程序都在后台运行,但是我需要导航到主屏幕(活动A)

<activity
    android:name="Activity_A"
    android:exported="false"
    android:screenOrientation="sensorPortrait"
    android:theme="@style/MyAppTheme"
    android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
    android:name="Activity_B"
    android:exported="false"
    android:screenOrientation="sensorPortrait"
    android:theme="@style/MyAppTheme"
    android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
    android:name="Activity_C"
    android:exported="false"
    android:screenOrientation="sensorPortrait"
    android:theme="@style/MyAppTheme"
    android:windowSoftInputMode="adjustPan">
    <intent-filter>
        <action android:name="Activity_C" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

3 个答案:

答案 0 :(得分:1)

之所以会这样,是因为通常以前的活动会保存在堆栈中,并且当用户按下“后退”按钮时,会调用该堆栈,因此,根据我的问题,如果您想通过活动C打开“家庭活动”,只需将意图从活动C调用到家庭通过重写活动C中的onbackpressed()方法来进行活动。 这是一个例子。

Intent homeIntent = new Intent(this,HomeActivity);
startActivity(homeIntent);
finish();

finish()用于删除堆积的活动。

答案 1 :(得分:0)

您可以在活动C的AndroidManifest.xml文件中添加以下行。

android:launchMode="singleTop"

从“通知”中打开并按回时,它将重定向您到家庭活动。希望对您有帮助。

答案 2 :(得分:0)

创建Notification时,在创建FLAG_ACTIVTY_NEW_TASKFLAG_ACTIVTY_CLEAR_TASK之前,将IntentPendingIntent都添加到Notification中。 / p>

这将导致ActivityC在新任务中启动,清除以前可能在那里进行过的所有活动。在后退时按ActivityC,该应用将没有任何活动,这将使用户重新回到HOME屏幕。重新启动应用程序将从ActivityA开始。

这不会影响A->B->C以来的正常活动。