Android 插入匹配器
我对UriMatcher有点困惑Android 插入匹配器,android,uri,android-contentprovider,Android,Uri,Android Contentprovider,我对UriMatcher有点困惑 sURIMatcher.addURI(AUTHORITY, BASE_PATH, BOOK); sURIMatcher.addURI(AUTHORITY, BASE_PATH + "/#", BOOK_ID); 书的路径中实际存储了什么? 当更新和删除时,BOOK_ID将是唯一可以使用的东西,那么BOOK的用途是什么呢 谢谢。这是一本关于urimatcher的迷你入门书。BOOK和BOOK_ID是常量整数,提供程序仅使用它们来确定要执行的代码。BASE_PAT
sURIMatcher.addURI(AUTHORITY, BASE_PATH, BOOK);
sURIMatcher.addURI(AUTHORITY, BASE_PATH + "/#", BOOK_ID);
书的路径中实际存储了什么?
当更新和删除时,BOOK_ID将是唯一可以使用的东西,那么BOOK的用途是什么呢
谢谢。这是一本关于urimatcher的迷你入门书。BOOK和BOOK_ID是常量整数,提供程序仅使用它们来确定要执行的代码。BASE_PATH是调用者传入的字符串,可能是表的名称,但实现并不严格。AUTHORITY是调用方com.example.provider传入的字符串 发生的情况是uri进入内容提供程序,urimatcher通过返回整数来确定要执行的代码
int uriType = sURIMatcher.match(uri);
switch (uriType) {
case TODOS:
checkColumns(availableRides, projection);
queryBuilder.setTables(RidesDatabaseHandler.TABLE_RIDES);
break;
case TODO_ID:
checkColumns(availableRides, projection);
queryBuilder.setTables(RidesDatabaseHandler.TABLE_RIDES);
// adding the ID to the original query
queryBuilder.appendWhere(RidesDatabaseHandler.KEY_ID + "="
+ uri.getLastPathSegment());
break;
case LOCATIONS:
checkColumns(availableLocations, projection);
queryBuilder.setTables(RidesDatabaseHandler.TABLE_LOCATIONS);
break;
default:
throw new IllegalArgumentException("Unknown URI: " + uri);
}