我有两个 Android 应用程序 - 应用程序 A 和应用程序 B。我还有一个网站托管 applinks.json 文件并验证它是否正常工作 - 单击链接确实会将我带到应用程序 A。
我想做的事:
我想让同一个网站指向不同的应用程序,例如mywebsite.com/applicationA 链接到应用程序 A,mywebsite.com/applicationB 链接到应用程序 B。
这两个应用程序都在 assetlinks.json 中定义。然而,我在使用 Google Pixel 6 时观察到,它只允许我的一个应用程序一次处理应用程序链接。如果我为一个应用程序添加支持的链接,它将从另一个应用程序中删除。
所以问题是——这可能吗?如果是这样 - 如何进行,如果不是,这种安排的正确方法是什么?
如果您有两个独立的应用程序,具有不同的包 ID(应用程序 ID),并且都在
assetlinks.json
文件中正确配置,理论上,这两个应用程序应该能够处理相同的应用程序链接。但是,如果单击应用程序链接时始终打开一个应用程序,可能是由于:
意图过滤器的优先级:每个应用程序可能配置不同的意图过滤器来处理相同的应用程序链接。 Android 系统根据各种因素(例如意图过滤器的特殊性、优先级以及应用程序的安装顺序)决定打开哪个应用程序。确保两个应用程序中的意图过滤器配置正确并且不会相互冲突。
如果您想根据同一域的不同 URL 打开特定应用程序,可以通过为每个应用程序配置不同的意图过滤器来实现此目的。具体方法如下:
在 AndroidManifest.xml 中配置 Intent 过滤器:在每个应用程序的 AndroidManifest.xml 文件中,为您希望应用程序处理的 URL 定义特定的 Intent 过滤器。您可以指定不同的路径、主机或查询参数来区分 URL。
例如,在App A的清单中:
<intent-filter android:autoVerify="true">
<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="yourdomain.com" android:pathPrefix="/appA/*" />
</intent-filter>
在 App B 的清单中:
<intent-filter android:autoVerify="true">
<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="yourdomain.com" android:pathPrefix="/appB/*" />
</intent-filter>
应用程序 A 将处理 yourdomain.com 上路径为“/appA/”的 URL,而应用程序 B 将处理同一域上路径为“/appB/”的 URL。
更多详情请参考官方文档Android Data Element