由于在 Android 12+ 上打开应用程序链接所需的意图过滤器规范,我有点困惑无需选择哪个应用程序应打开链接的选项。
最初,我们从当前推荐的 autoVerify="true" 方法开始。
<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="somefixedprefix.mainurl.de"
/>
</intent-filter>
适用于 Android 12+ 设备,但不适用于 Android < 11 due to links not being auto verified.
对于那些我们实现了另一个意图过滤器
<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="somecustomscheme"
android:host="somefixedprefix.mainurl.de"
/>
</intent-filter>
然后在 Android 上运行 < 12.
两者还处理 somecustomscheme://somefixedprefix.mainurl.de/someappendix 或https://somefixedprefix.mainurl.de/someappendix
现在我的问题是我完全困惑: 在 Android 12+ 上,我仍然可以使用 somecustomscheme://somefixedprefix.mainurl.de/someappendix 从应用程序链接打开应用程序,而不会出现选择对话框来显示我要打开哪个应用程序的链接(当然,前提是没有具有在意图过滤器中定义的相同方案的其他应用程序)。
为了解决您的困惑,让我们澄清一下 Android 中应用链接和自定义方案的行为,特别是对于 Android 12+:
自定义方案 (somecustomscheme://)
是的,您仍然可以使用 somecustomscheme://... 直接打开您的应用程序,前提是没有其他应用程序在其意图过滤器中声明了相同的方案。此行为在所有 Android 版本中都是一致的,包括 Android 12+。