- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
这很有效!我不确定发生了什么变化。我确实使用 git,现在我已经检查了我的提交和代码几个小时。
如标题所示,我的 uri 匹配器已停止匹配。
下面我粘贴了我的内容提供者的相关部分。
public class Provider extends ContentProvider {
private static final String TAG = "Provider";
private static final String SCHEME = ContentResolver.SCHEME_CONTENT;
private static final String AUTHORITY = "com.snot.bodyweightworkout.database.provider";
private static final String BASE_URI = SCHEME + AUTHORITY;
public static final Uri URI_EXERCISES = Uri.parse(BASE_URI + "/exercise");
public static final Uri URI_PROGRAMS = Uri.parse(BASE_URI + "/program");
public static final Uri URI_PROGRAM_EXERCISES = Uri.parse(BASE_URI + "/program/#/exercise");
private static final int EXERCISE = 1;
private static final int EXERCISES = 2;
private static final int PROGRAM = 3;
private static final int PROGRAMS = 4;
private static final int PROGRAM_EXERCISES = 5;
private static final UriMatcher sURIMatcher = new UriMatcher(UriMatcher.NO_MATCH);
static
{
sURIMatcher.addURI(AUTHORITY, "/exercise", EXERCISES);
sURIMatcher.addURI(AUTHORITY, "/exercise/#", EXERCISE);
sURIMatcher.addURI(AUTHORITY, "/program", PROGRAMS);
sURIMatcher.addURI(AUTHORITY, "/program/#", PROGRAM);
sURIMatcher.addURI(AUTHORITY, "/program/#/exercise", PROGRAM_EXERCISES);
}
...
然后是应该进行实际匹配的部分。
@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
Log.v(TAG, "URI: " + uri);
Cursor result = null;
int match = sURIMatcher.match(uri);
switch(match)
{
case PROGRAMS:
result = DatabaseHandler
.getInstance(getContext())
.getReadableDatabase()
.query(Program.TABLE_NAME, Program.FIELDS, null, null, null, null, null, null);
result.setNotificationUri(getContext().getContentResolver(), URI_PROGRAMS);
break;
case PROGRAM:
final long pid = Long.parseLong(uri.getLastPathSegment());
result = DatabaseHandler
.getInstance(getContext())
.getReadableDatabase()
.query(Program.TABLE_NAME, Program.FIELDS,
Program.COL_ID + " IS ?",
new String[] { String.valueOf(pid) }, null, null, null, null);
result.setNotificationUri(getContext().getContentResolver(), URI_PROGRAMS);
break;
...
default:
throw new UnsupportedOperationException("Unmatched(" + match + ") URI: " + uri.toString());
我正在尝试使用这样的游标加载器进行查询:
getLoaderManager().initLoader(0, null, new LoaderManager.LoaderCallbacks<Cursor>() {
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
return new CursorLoader(getActivity(), Provider.URI_PROGRAMS, Program.FIELDS, null, null, null);
}
每次默认都被命中。不匹配,我最终得到一个 FC 和我的日志中的以下行。
E/AndroidRuntime( 1979): Caused by: java.lang.UnsupportedOperationException: Unmatched(-1) URI: content://com.snot.bodyweightworkout.database.provider/program
我已经关注这个几个小时了,我真的需要一些新鲜的眼光来达到顶峰。因此,如果有好心人可以看一看,我将非常感激。提前致谢。
最佳答案
不需要起始 /
,因此定义您的 addUri()
方法调用如下:
static {
sURIMatcher.addURI(AUTHORITY, "exercise", EXERCISES);
sURIMatcher.addURI(AUTHORITY, "exercise/#", EXERCISE);
sURIMatcher.addURI(AUTHORITY, "program", PROGRAMS);
sURIMatcher.addURI(AUTHORITY, "program/#", PROGRAM);
sURIMatcher.addURI(AUTHORITY, "program/#/exercise", PROGRAM_EXERCISES);
}
关于android - URIMatcher 不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18814898/
我有两个 Uris。假设他们是: content://myprovider/messages content://myprovider/messages/# 在我的扩展 ContentProvider
首先:我已经筛选了很多关于 SO 主题的问题,但仍然没有找到正确的答案。 这是我的代码的一个(简化的)版本: private static UriMatcher uriMatcher
我正在为 Android 应用程序创建内容提供程序,但我在使用 UriMatacher 正确匹配 uri 时遇到问题。 . 例如,我添加 uri 以匹配(从链接中截取) sURIMatcher.add
我有一个 ContentProvider,我需要匹配一些包含 UUID 作为通配符的 URI。 来自 ContentProvider 的 UriMatcher: public static final
UriMatcher(int code) 构造函数中的代码参数根据 Android Developer Document用于“匹配根 URI”,代码通常为 NO_MATCH其值等于 -1 我不清楚这个
这很有效!我不确定发生了什么变化。我确实使用 git,现在我已经检查了我的提交和代码几个小时。 如标题所示,我的 uri 匹配器已停止匹配。 下面我粘贴了我的内容提供者的相关部分。 public cl
我有这个 URI content://com.mycompany.data/routes?group=M01&office=BOCE&zone=EC01 还有这条规则 sUriMatcher.addU
我是 Android 新手。我浏览了 Android ContentProvider 的代码,我对 UriMatcher 有点困惑,因为 static 中的语句将首先执行。在 UriMatcher 内
我对内容提供者有疑问。 每次我编写内容提供程序时,我都会将 URI MATCHER 定义放在静态括号中,但 URI MATCHER 被声明为该类的私有(private)数据成员。只有 definiti
我正在尝试为搜索对话框提供自定义建议。我正在使用 urimatcher 来匹配 uri。但它不起作用。我总是得到异常“java.lang.IllegalArgumentException: Unkno
我想使用 UriMatcher匹配自定义 http 链接。 我有以下代码: UriMatcher mUriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
我有一个为 ShareActionProvider 执行后台处理的自定义 ContentProvider。提供的 Uri 路径是完整的文件路径(例如:/mnt/sdcard/my.file)。 uri
我正在尝试根据几个示例实现我自己的 ContentProvider,但我对 UriMAtcher 中的不同方法感到困惑。例如: JavaDoc用 # 显示它,如下所示: sURIMatcher.add
我的任务是设计我的 Web 服务客户端代码以使用 Android SDK 中的实用程序类 UriMatcher。不幸的是,开发指南中的示例与我的想法无关。我知道我遗漏了一些关于功能的基本要点,可能还有
android.content.UriMatcher中的Uri Matcher是什么 如何使用它?有人可以解释一下以下三行代码的含义吗? uriMatcher = new UriMatcher(U
在对我之前的问题的回答中,有人指出 Android 类 UriMatcher 中存在一些固有缺陷(因为没有更好的词)。任何人都可以查明 UriMatcher 的已知问题吗?我正在设计一个依赖 UriM
我有一个 ConentProvider 并使用 UriMatcher 来执行适当的SQL 语句。 代码有效,但我不喜欢从中提取参数的方式uri 的: 这是失败的: String badge_id =
我看到的关于如何制作 ContentProvider 的示例都用过UriMatcher#match(Uri) insert、query、update 和 delete 方法中的方法可以轻松处理所有 U
我是一名优秀的程序员,十分优秀!