`

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);
		}
	}
分享到:
评论
4 楼 TsuiRay 2011-08-05  
tiantianhappy 写道
能问你一个问题吗?为什么 uriMatcher.addURI(Book.AUTHORITY, "item", Book.ITEM); 
而不是 uriMatcher.addURI(Book.AUTHORITY, "/item", Book.ITEM);
api上是有/的,能解释一下吗?

最新的API是不能写"/"的,应该是版本升级后,API没有及时更新.
3 楼 steveking1987 2011-04-03  
貌似不能加,加了/反而找不到相对应的表了
2 楼 追求幸福 2011-02-14  
tiantianhappy 写道
能问你一个问题吗?为什么 uriMatcher.addURI(Book.AUTHORITY, "item", Book.ITEM); 
而不是 uriMatcher.addURI(Book.AUTHORITY, "/item", Book.ITEM);
api上是有/的,能解释一下吗?

我的理解是:addURL的第二个参数是path,就是比对uri中path的部分,不管你加不加都会自动从根目录/开始匹配,所以加不加都不影响。若是你的数据不是存在于/下,那你就要加*/(
*/item).若我有什么地方说得不对,请指正。谢谢!
1 楼 tiantianhappy 2011-02-13  
能问你一个问题吗?为什么 uriMatcher.addURI(Book.AUTHORITY, "item", Book.ITEM); 
而不是 uriMatcher.addURI(Book.AUTHORITY, "/item", Book.ITEM);
api上是有/的,能解释一下吗?

相关推荐

    URL和URI使用指南

    URL和URI的使用的方法。获取网络上的数据。

    ContentProvider

    private static final UriMatcher URI_MATCHER=new UriMatcher(UriMatcher.NO_MATCH); private final String TAG="provider"; private static final String authority="com.example.tigongzhe.provider"; static...

    android 360安全卫士 反编译源码

    UriMatcher localUriMatcher = new UriMatcher(-1); t = localUriMatcher; localUriMatcher.addURI("com.qihoo360.mobilesafeguard", "blacklist", 1); t.addURI("com.qihoo360.mobilesafeguard", "blacklist/#...

    APP开发教程 Java Android移动端开发 13、Android数据存储和共享(二) 共25页.pptx

    Android数据共享概述 ContentProvider注册/实现 UriMatcher/ContentUris 系统ContentProvider 联系人 系统设置…

    详解Android开发中ContentObserver类的使用

    ContentObserver——内容观察者,目的是观察(捕捉)特定Uri引起的数据库的变化,...熟悉Content Provider(内容提供者)的应该知道,我们可以通过UriMatcher类注册不同类型的Uri,我们可以通过这些不同的 Uri来查询不同

    Android内容提供者ContentProvider用法实例分析

    本文实例讲述了Android内容提供者ContentProvider用法。分享给大家供大家参考,具体如下: PersonContentProvider内容提供者...import android.content.UriMatcher; import android.database.Cursor; import android.d

    Android ContentProvider

    android Contentprovider的使用demo 所创建工程为andorid5.0环境,里面有四个工程,为了证明共享所以有两个程序,eclipse版本低的自己新建工程把 ContentProvider2,androidContentProvider两个工程里面拷贝出来就...

    Android中ContentProvider的示例

    Android中ContentProvider的示例,详细可以参见博客:http://www.cnblogs.com/plokmju/p/android_ContentProvider.html

    ContentProvider远程数据操作(1.0).zip

    ContentProvider远程数据操作(1.0).zip ContentProvider远程数据操作(1.0).zip ContentProvider远程数据操作(1.0).zip ContentProvider远程数据操作(1.0).zip ContentProvider远程数据操作(1.0).zip

Global site tag (gtag.js) - Google Analytics