Android 12 中的 IntentFilter 和导出组件是否有任何(记录不详)更改?
我们使用如下声明(Manifest)来链接到应用程序的某些部分:
<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 之前,系统会在点击 https://some.domain.com/native/foo/bar/
等链接时在我们的应用中打开这些 URL。我浏览了 变更日志,但找不到任何内容可以解释这种行为(考虑到我们已经设置了 exported="true"
)。
我缺少什么以及如何告诉系统提供我们的应用程序来处理这些特定的 URL?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
更新
在测试了一些案例后,我发现您应该将您的方案从
https
更改为非https
字符串,例如your_app_string
。如果您仍然想使用https
作为您的方案,您应该检查 Doordash 的 技术博客。你应该让 android 系统可以验证你的方案。简单来说,从 android 12(api 31) 开始,你需要通过在以下位置托管数字资产链接 JSON 文件来声明你的网站和意图过滤器之间的关联:
<代码>https://some.domain.com/.well-known/assetlinks.json
官方文档参考此处
UPDATE
After test some case, I found you should change your scheme from
https
to nonhttps
string, such asyour_app_string
. If you still want to usehttps
as your scheme, you should check the doordash's tech blog.Your should make the android system can verify your scheme.In simple words,start with android 12(api 31), you need Declare the association between your website and your intent filters by hosting a Digital Asset Links JSON file at the following location:
https://some.domain.com/.well-known/assetlinks.json
official doc reference here