通过 url 方案从其他应用程序打开后台应用程序时启动主程序 activity

Start main activity when opening backgrounded app from other app by url scheme

我刚刚实现了到我的应用程序的深层链接。我已将 intent 过滤器添加到我的主 activity。当用户启动我的 url 方案时,我正在解析它并在 activity 中处理以根据参数显示正确的信息。当我的应用程序从头开始时它运行良好。

    <activity
    android:launchMode="singleTask"
    android:name="com.my.app.ui.activities.MainActivity"
    android:screenOrientation="portrait"
    android:configChanges="orientation|screenSize|">
    <intent-filter>
        <action android:name="android.intent.action.VIEW"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <data android:scheme="myapp-scheme"/>
    </intent-filter>
</activity>

当用户打开堆栈上的一些其他活动并进入后台时会出现问题。现在,如果通过调用我的方案 url 从后台恢复此应用程序,所有活动仍在堆栈中并且主要 activity 不会显示。 我该如何解决这个问题? 我考虑导航回主 activity,但我不知道应用程序是从其他应用程序启动还是以正常方式启动。

您需要通过在清单中添加以下行(对于 ManiActivity)使您的 MainActivity 成为 singleTask:

android:启动模式="singleTask"

然后,覆盖 MainActivity 中的 onNewIntent() 并根据深度 link [=23] 处理导航=] 这回答了你的问题。