Android 12 中的 IntentFilter 和导出组件是否有任何(记录不详)更改?

发布于 2025-01-11 00:26:55 字数 1073 浏览 0 评论 0 原文

我们使用如下声明(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?

We use declarations like the following one (Manifest) to link to certain parts of the app:

    <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>

On devices running Android 12, this suddenly stopped working, e.g. scanning a QR code containing a certain URL automatically opens it in the default browser. Prior to Android 12, the system offers to open those URLs in our app when tapping on links like https://some.domain.com/native/foo/bar/. I went through the changelog and was unable to find anything that could explain this behavior (considering we already set exported="true").

What am I missing and how can I tell the system to offer our app to handle those specific URLs?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

ぃ双果 2025-01-18 00:26:55

更新
在测试了一些案例后,我发现您应该将您的方案从 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 non https string, such as your_app_string. If you still want to use https 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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文