在拥有免安装应用和已安装的应用(版本)时,我遇到了深层链接问题。我的设置如下:
- 基础应用程序(com.android.application)
- 已安装的应用程序(com.android.dynamic-feature with dist:instant="false", dist:onDemand="false")
清单.xml:
<application>
<activity
android:name=".Activity1">
<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="example.com"
android:pathPattern="/deeplink/*" />
</intent-filter>
...
- Instant App(com.android.dynamic-feature with dist:instant="true", dist:onDemand="false")
清单.xml:
<application>
<activity
android:name=".Activity2">
<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="example.com"
android:pathPattern="/deeplink/*" />
</intent-filter>
...
(请注意,已安装应用的清单定义了 Activity1,而免安装应用的清单定义了 Activity2)
问题是,当我打开带有深层链接的已安装应用程序时,它会打开 Activity2(即时应用程序的活动)而不是已安装应用程序的活动。
我了解 gradle 对动态功能模块和将所有 3 个清单合并在一起的基本应用程序(基本应用程序、已安装应用程序、即时应用程序)进行清单合并。但我认为 android 会足够聪明,可以使用已安装应用程序的活动来启动应用程序(如果它存在于设备上)。
所以我的问题是:如何同时支持已安装应用和免安装应用中的相同深层链接?换句话说:如果没有安装应用,使用免安装应用的Activity(Activity2)打开深层链接,如果安装了应用,使用已安装应用的Activity(Activity1)打开深层链接?
谢谢你的帮助!