gpt4 book ai didi

android - UriMatcher 不匹配模式

转载 作者:行者123 更新时间:2023-11-29 18:02:58 25 4
gpt4 key购买 nike

我正在为 Android 应用程序创建内容提供程序,但我在使用 UriMatacher 正确匹配 uri 时遇到问题。 .

例如,我添加 uri 以匹配(从链接中截取)

sURIMatcher.addURI("content://com.example", "people", PEOPLE);
sURIMatcher.addURI("content://com.example", "people/#", PEOPLE_ID);
sURIMatcher.addURI("content://com.example", "people/#/phones", PEOPLE_PHONES);

然后尝试访问 contacts/people/1/phones。成功的匹配最终是 PEOPLE_ID 而不是 PEOPLE_PHONES

查询最初是由这段代码生成的。

Uri uri = Uri.parse("content://com.example/people/#/phones");
ContentUris.appendId(uri.buildUpon(), 1).build();

随着一些日志语句的出现,我看到了以下内容:

传递给 query 的 uri给出这个:

content://com.example/people/1#/phones

但是 uri.getPath() 给出了这个:

/people/1

uri 的第三个路径部分明显被丢弃,这解释了为什么它匹配了错误的 uri。

Android 开发者网站的示例似乎表明这应该没有问题。我是否错误地创建了 uri?这只是一个错误吗?这是预期的功能吗(因此来自 Android 开发人员的示例是错误的)?

最佳答案

Uri.parse() 不知道 UriMatcher 的通配符;这里,#是URI的 fragment 标识符,所以当你解析content://com.example/people/#/phones时,它变成了content ://com.example/people + fragment /phones。 id 正确地附加到 URI 的末尾,然后 fragment 被保留。在这种情况下,您不能依赖 ContentUris,而是需要长期构建 Uri:

                path = new Uri.Builder()
.scheme( ContentResolver.SCHEME_CONTENT )
.authority( DataProvider.AUTHORITY )
.appendPath( "people" )
.appendPath( "1" )
.appendPath( "phones" ) ).build();

关于android - UriMatcher 不匹配模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14868610/

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