ContentProvider共享数据和ContentResolver的使用,Uri,UriMatcher和ContentUris
3)使用ContentResolver操作ContentProvider中的数据
- 添加数据:public Uri insert(Uri uri, ContentValues values)
-删除数据:public int delete(Uri uri, String selection, String[] selectionArgs)
-更新数据:public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs)
-获取数据:public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)
总结:
--ContentProvider共享数据是程序和程序之间通信用的.
--继承ContentProvider类
--统一了数据访问方式
2.Uri
Uri代表要操作的数据
content://cn.itcast.provider.personprovider/person/10
-scheme:content://
- 主机名或authority:cn.itcast.provider.personprovider
-路径:/person/10
总结:
--Uri 主要包含了两部分信息:需要操作的 ContentProvider,对ContentProvider中的什么数据进行操作
--要操作 person 表中 id 为 10 的记录,可以构建这样的路径 :/person/10
--要操作 person 表中 id 为 10 的记录的 name 字段, person/10/name
--要操作 person 表中的所有记录,可以构建这样的路径 :/person
--要操作 xxx 表中的记录,可以构建这样的路径 :/xxx
3.UriMatcher
UriMatcher 类用于匹配Uri
UriMatcher sMatcher = new UriMatcher(UriMatcher.NO_MATCH);
添加需要匹配uri,如果匹配就会返回匹配码:sMatcher.addURI(“cn.itcast.provider.personprovider”, “person”, 1);//
sMatcher.addURI(“cn.itcast.provider.personprovider”, “person/#”, 2);
switch (sMatcher.match(Uri.parse("content://cn.itcast.provider.personprovider/person/10"))) {
?? case 1
??? break;
?? case 2
??? break;
?? default:// 不匹配
??? break;
}
总结:
--常量 UriMatcher.NO_MATCH 表示不匹配任何路径的返回码
--# 号为通配符
4.ContentUris
ContentUris 类用于获取Uri路径后面的ID部分
1)为路径加上ID: withAppendedId(uri, id)
Uri uri = Uri.parse("content://cn.itcast.provider.personprovider/person")
Uri resultUri = ContentUris.withAppendedId(uri, 10);
--生成后的 Uri 为: content://cn.itcast.provider.personprovider/person/10
2)从路径中获取ID: parseId(uri)
Uri uri = Uri.parse("content://cn.itcast.provider.personprovider/person/10")
long personid = ContentUris.parseId(uri);
--获取的结果为 :10
?
转载:http://blog.csdn.net/getclass/article/details/5340244