gpt4 book ai didi

android - Intent 过滤器中空主机的说明符是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:15:21 25 4
gpt4 key购买 nike

我正在尝试让我的应用响应这些方案:

my-app://product/XXX

my-app://

以下代码有效,但我收到警告,android:host 不能为空。它仍然有效,但是 - 是否有指定空主机的正确方法?

我不想将“*”指定为 android-host,因为还有其他处理不同操作的 Activity ,然后它们不会直接打开,但我得到一个选择器对话框来选择应该打开哪个 Activity 。

<activity android:name=".ui.OpenerActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:screenOrientation="portrait" >
<intent-filter>
<data android:scheme="my-app" />
<data android:host="product" />
<data android:host="" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
</activity>

非常感谢!

最佳答案

在您的 URI 中没有主机(或更正式的 权限)绝对没问题。想想常用的file:///tmp/example.file

请注意,虽然无主机的分层 URI 不是不透明(如 mailto:john@example.com),但有一个路径。与文件 URI 一样,主机名被单个 / 替换。

因此,您的 URI 应该采用 my-app:///product/XXX 的形式。 Intent 过滤器可能如下所示:

<intent-filter>
<category android:name="android.intent.category.DEFAULT"/>

<action android:name="android.intent.action.VIEW"/>

<data android:host=""/>
<data android:scheme="my-app"/>
<data android:pathPrefix="/product"/>
<data android:pathPattern=".+"/>
</intent-filter>

您仍然会收到关于主机名为空的警告,这绝对没问题。此警告是检查 Firebase App Indexing 的结果,我想这只有在存在网站时才有意义(您将从中获取主机名,即整个 URI)。

由于您无论如何都不会使用索引,因此您可以通过将以下内容添加到项目的 lint.xml 来移除警告:

<!-- no app indexing without a hostname -->
<issue id="GoogleAppIndexingUrlError" severity="ignore"/>

有关更多详细信息,请查看 URI specWikipedia entry on file-URIs .

关于android - Intent 过滤器中空主机的说明符是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33611169/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com