gpt4 book ai didi

Android UriMatcher 不匹配通配符

转载 作者:行者123 更新时间:2023-11-29 17:36:11 28 4
gpt4 key购买 nike

我有一个 ContentProvider,我需要匹配一些包含 UUID 作为通配符的 URI

来自 ContentProvider 的 UriMatcher:

public static final Uri CONTENT_URI_NOTIFICATIONS = Uri.parse("content://" + AUTHORITY + "/" + BASE_PATH_NOTIFICATIONS);
public static final Uri CONTENT_URI_USERS = Uri.parse("content://" + AUTHORITY + "/" + BASE_PATH_USERS);

private static final int NOTIFICATIONS = 40;
private static final int USER_ID = 70;

private static final UriMatcher sURIMatcher = new UriMatcher(UriMatcher.NO_MATCH);

static
{
sURIMatcher.addURI(AUTHORITY, BASE_PATH_NOTIFICATIONS, NOTIFICATIONS);
sURIMatcher.addURI(AUTHORITY, BASE_PATH_USERS + "/*", USER_ID);
}

NOTIFICATIONS 的查询代码:

 Uri uri = Uri.parse(String.valueOf(MyContentProvider.CONTENT_URI_NOTIFICATIONS));
return new CursorLoader(getActivity(), uri, projection, null, null, null);

USER_ID 的查询代码:

String userId = "73279386-5459-4316-9ff9-7c6b7b84029a";
Uri uri = Uri.parse(MyContentProvider.CONTENT_URI_USERS + "/" + userId);
return new CursorLoader(getActivity(), uri, projection, null, null, null);

从上面的 UriMatcher 来看,NOTIFICATIONS URI 匹配,但 USER_ID 不匹配。知道这里有什么问题吗?值得注意的是,当我曾经使用整数而不是 UUID 来表示用户并且曾经在 UriMatcher 中使用 # 而不是 * 时,一切都按预期工作。切换到通配符后,匹配器停止匹配包含 UUID 的 URI。

最佳答案

显然,您添加 URI 的顺序很重要。如果您进行如下设置,USER_DETAILS 将不再被识别。您必须调换顺序并先添加 USER_DETAILS。

sURIMatcher.addURI(AUTHORITY, BASE_PATH_USERS + "/*", USER_ID);
sURIMatcher.addURI(AUTHORITY, BASE_PATH_USERS + "/details", USER_DETAILS);

关于Android UriMatcher 不匹配通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30446481/

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