我对UriMatcher有点困惑。
sURIMatcher.addURI(AUTHORITY, BASE_PATH, BOOK);
sURIMatcher.addURI(AUTHORITY, BASE_PATH + "/#", BOOK_ID);
实际存储在BOOK的路径中的是什么? 当更新和删除时,BOOK_ID将是唯一使用的东西,那么BOOK的用途是什么?
感谢。
答案 0 :(得分:0)
这是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);
}