App Links Assistant Android Studio 在第一个应用中打开 activity

App Links Assistant Android Studio open in first app activity

我使用 Android Studio 中的 'App Links Assistant' 来配置将通过我的应用程序打开的 links。

一切正常。

但我的问题是,当我通过该应用程序打开 link 时,它会打开在我单击 link 的上一个应用程序中定义的 activity。

例如:

如果我在 WhatsApp 中点击 link,我会看到类似这样的内容:

当我使用该应用程序打开时,该应用程序会在 WhatsApp 中打开,如下图所示:

那么如何才能只在我的应用程序中打开应用程序,而不是在 WhatsApp 或其他应用程序中打开应用程序?

这是我的 AndroidManifest.xml 代码 activity:

 <activity android:name=".extraLinks"
        android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
        >
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />

            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />

            <data
                android:scheme="http"
                android:host="www.jtube.live" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />

            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />

            <data
                android:scheme="https"
                android:host="www.jtube.live" />
        </intent-filter>
       
    </activity>

更新:我检查了我的 Gmail 和 Chrome 应用程序,如果我从这些应用程序打开它运行良好,所以我的问题只有 Whatsapp 应用程序...

试试这个:

<intent-filter android:label="app_label">
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.LAUNCHER"/>
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />

    <data
       android:scheme="https"
       android:host="www.jtube.live" />
</intent-filter>

当 activity A 启动 activity B 时,默认行为是:

在当前任务中创建了 activity B 的新实例,并将其推送到后台堆栈。

要自定义此类行为,有一些选项:

  • 向启动特定 activity;
  • 的意图添加标志
  • 为正在启动的 activity 设置 launchMode 属性;

当我们谈论其他应用程序时,第一个选项是您无法控制的。

由于以下原因,您在 WhatsApp 和 Gmail 应用程序中面临不同的行为:

Gmail 使用 FLAG_ACTIVITY_NEW_TASK 为每个 HTTP link 自定义意图,因此,您的应用程序中的 activity 在新任务中启动。 WhatsApp 应用程序在启动任何处理特定 HTTP link.

的 activity 时未指定此标志

在您的情况下,自定义此行为的唯一方法是使用处理应用 link 的目标 activity 的 launchMode 属性。有两个可能的值适用于您的情况:singleTasksingleInstance.

检查这些 link 以了解其工作原理: