UriMatcher

public static final UriMatcher uriMatcher;
	static {
		uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
		uriMatcher.addURI(Book.AUTHORITY, "item", Book.ITEM);
		uriMatcher.addURI(Book.AUTHORITY, "item/#", Book.ITEM_ID);
	}


这里UriMatcher类型的静态字段是用来匹配传入到ContentProvider中的Uri的类。其构造方法传入的匹配码是使用match()方法匹配根路径时返回的值,这个匹配码可以为一个大于零的数表示匹配根路径或传入-1,即常量UriMatcher.NO_MATCH表示不匹配根路径。addURI()方法是用来增加其他URI匹配路径的,第一个参数传入标识ContentProvider的AUTHORITY字符串。第二个参数传入需要匹配的路径, 这里的#代表匹配任意数字,另外还可以用*来匹配任意文本。第三个参数必须传入一个大于零的匹配码,用于match()方法对相匹配的URI返回相对应的匹配码。

例子:
@Override
	public String getType(Uri uri) {
		// TODO Auto-generated method stub
		System.out.println(" BookProvider getType...");
		int code = uriMatcher.match(uri);
		switch (code) {
		case Book.ITEM:
			System.out.println(" BookProvider getType..." +Book.CONTENT_TYPE);
			return Book.CONTENT_TYPE;
		case Book.ITEM_ID:
			System.out.println(" BookProvider getType..." +Book.CONTENT_ITEM_TYPE);
			return Book.CONTENT_ITEM_TYPE;
		default:
			throw new IllegalArgumentException("Unknown URI " + uri);
		}
	}

你可能感兴趣的:(Matcher)