Android 12 中 IntentFilter 和导出的组件是否有任何(记录不详的)更改?
Are there any (poorly documented) changes to IntentFilter's and exported components in Android 12?
我们使用如下声明(Manifest)来 link 应用程序的某些部分:
<activity
android:name=".some.package.SomeActivity"
android:launchMode="singleInstance"
android:exported="true">
<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" />
<data android:host="*.some-domain.com" />
<data android:path="/native/foo" />
</intent-filter>
</activity>
在设备 运行 Android 12 上,这突然停止工作,例如扫描包含特定 URL 的二维码会自动在默认浏览器中打开它。在 Android 12 之前,当点击 link 之类的 https://some.domain.com/native/foo/bar/
时,系统会在我们的应用程序中打开那些 URL。我检查了 changelog,但找不到任何可以解释此行为的内容(考虑到我们已经设置了 exported="true"
)。
我错过了什么,我如何告诉系统提供我们的应用程序来处理那些特定的 URLs?
更新
在测试了一些案例之后,我发现你应该将你的方案从 https
更改为非 https
字符串,例如 your_app_string
。如果你仍然想使用 https
作为你的方案,你应该检查 doordash 的 tech blog.
你应该让android系统可以验证你的scheme.In简单的单词,从android12(api31)开始,你需要声明你的关联通过在以下位置托管数字资产链接 JSON 文件来过滤网站和您的意图:
https://some.domain.com/.well-known/assetlinks.json
我们使用如下声明(Manifest)来 link 应用程序的某些部分:
<activity
android:name=".some.package.SomeActivity"
android:launchMode="singleInstance"
android:exported="true">
<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" />
<data android:host="*.some-domain.com" />
<data android:path="/native/foo" />
</intent-filter>
</activity>
在设备 运行 Android 12 上,这突然停止工作,例如扫描包含特定 URL 的二维码会自动在默认浏览器中打开它。在 Android 12 之前,当点击 link 之类的 https://some.domain.com/native/foo/bar/
时,系统会在我们的应用程序中打开那些 URL。我检查了 changelog,但找不到任何可以解释此行为的内容(考虑到我们已经设置了 exported="true"
)。
我错过了什么,我如何告诉系统提供我们的应用程序来处理那些特定的 URLs?
更新
在测试了一些案例之后,我发现你应该将你的方案从 https
更改为非 https
字符串,例如 your_app_string
。如果你仍然想使用 https
作为你的方案,你应该检查 doordash 的 tech blog.
你应该让android系统可以验证你的scheme.In简单的单词,从android12(api31)开始,你需要声明你的关联通过在以下位置托管数字资产链接 JSON 文件来过滤网站和您的意图:
https://some.domain.com/.well-known/assetlinks.json