首页 > 代码库 > UriMatcher 和 ContentUris 的用法

UriMatcher 和 ContentUris 的用法

 

一.UriMatcher

UriMatcher 用来匹配Uri;使用addURI向UriMatcher中注册Uri。然后使用UriMatcher判断一个uri是否存在

1.创建:

UriMatcher matcher = new UriMatcher(UriMatcher.NO_MATCH);  

2.注册Uri

private int student=1;

private int studentId=2;

//向UriMatcher中注册Uri

matcher.addURI("com.example.shujuku", "students", student);  

matcher.addURI("com.example.shujuku", "students/#", studentId);  

第三个参数:匹配返回码

3.把现有的uri与注册的uri进行匹配

Uri uri = Uri.parse("content://" + "com.example.shujuku" + "/strdents");  
//match()方法匹配后会返回一个“匹配码”,这个匹配码
int match = matcher.match(uri); switch (match) { case student: return "vnd.android.cursor.dir/strdents"; case studentId: return "vnd.android.cursor.item/strdents"; default: return null; }

UriMatcher.NO_MATCH 没有匹配的Uri返回码(在实例化UriMatcher 时候传入)

# 号为通配符

* 号为任意字符

 

二。ContentUris

ContentUris主要获取Uri后面的id。

1.获取Uri路径中的Id

Uri uri = Uri.parse("content://com.example.shujuku/students/18")

long personid = ContentUris.parseId(uri);

2.为Uri路径添加Id

Uri uri = Uri.parse("content://com.example.shujuku/students")  

Uri uri_id= ContentUris.withAppendedId(uri, 18);

主要用到了parseId()和withAppendedId()两个方法。一个是用来获取Uri路径中的Id,一个是为Uri添加Id。