/**
* Listing 8-8: Defining a UriMatcher to determine if a request is for all
* elements or a single row
*/
// Create the constants used to differentiate between the different URI
// requests.
private static final int ALLROWS = 1;
private static final int SINGLE_ROW = 2;
private static final UriMatcher uriMatcher;
// Populate the UriMatcher object, where a URI ending in
// 'elements' will correspond to a request for all items,
// and 'elements/[rowID]' represents a single row.
static {
uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
uriMatcher.addURI("com.paad.skeletondatabaseprovider", "elements",
ALLROWS);
uriMatcher.addURI("com.paad.skeletondatabaseprovider", "elements/#",
SINGLE_ROW);
}
/**
* Listing 8-11: Returning a Content Provider MIME type
*/
@Override
public String getType(Uri uri) {
// Return a string that identifies the MIME type
// for a Content Provider URI
switch (uriMatcher.match(uri)) {
case ALLROWS:
return "vnd.android.cursor.dir/vnd.paad.elemental";
case SINGLE_ROW:
return "vnd.android.cursor.item/vnd.paad.elemental";
default:
throw new IllegalArgumentException("Unsupported URI: " + uri);
}
}
返回的类型应该包括两种形式,一种表示单一的项,另一种表示所有的项。
单一项:
vnd.android.cursor.item/vnd.<companyname>.<contenttype>
所有项:
vnd.android.cursor.dir/vnd.<companyname>.<contenttype>
使用UriMatcher ,基于传入的URI,返回正确的MIME类型。