android ContentProvider共享数据
ContentProvider共享数据
ContentProvider对外共享数据需要:
1.定义一个ContentProvider类,需要继承android的ContentProvider基类
2.在android系统中注册一个ContentProvider,注册ContentProvider时需要为它绑定一个Uri
Uri简介
组成部分:
1.访问资源的命名机制(scheme)
2.存放资源的主机名(authority)
3.资源自身的名称,由路径表示(path)
格式:scheme:// authority//path,其中authority中又包括了host和port两部分。
例如:
content://com.example.project:200/folder/subfolder/etc
\---------/ \----------------------------/ \----/ \------------------------/
Scheme host port path
\------------------------------------/
Authority
在Android中,由于很多资源(音频、视频、图片、以及个人通信录信息)都存入了数据库,所以Android中对资源的使用一般是通过ContentProivder访问数据库,见得比较多的就是Content这种类型的uri。
UriMatcher工具类:
用来匹配Content provider的URI
urimatcher主要用于匹配URI
首先第一步把你需要匹配Uri路径注册:
常量UriMatcher.NO_MATCH表示不匹配任何路径时的返回码
UriMatcher sMatcher = new UriMatcher(UriMatcher.NO_MATCH);
如果match()方法匹配content://cn.xxt.provider.personprovider/person路径,返回匹配码为1
sMatcher.addURI(“cn.xxt.provider.personprovider”, “person”, 1);//添加需要匹配uri,如果匹配就会返回匹配码
如果match()方法匹配content://cn.xxt.provider.personprovider/person/230路径,返回匹配码为2
sMatcher.addURI(“cn.xxt.provider.personprovider”, “person/#”, 2);//#号为通配符
switch (sMatcher.match(Uri.parse("content://cn.xxt.provider.personprovider/person/10"))) {
case 1
break;
case 2
break;
default://不匹配路径
break;
}
开发ContentProcider:
开发一个ContentProcider的子类这个子类需要实现ContentProcider的query()方法 、insert()方法、 update()方法、deleted()方法
在AndroidManifest.xml文件中注册ContentProcider指定android:authorities属性
配置ContentProcider:
ContentProcider调用方法的参数将会传给ContentProcider的query()方法 、insert()方法、 update()方法、deleted()方法
ContentProcider调用方法的返回值,也就是ContentProcider的query()方法 、insert()方法、 update()方法、deleted()方法的返回值
操作系统的ContentProcider:
调用Activity的getContentProcider()方法获取ContentProcider对象
根据需要调用ContentProcider的query()方法 、insert()方法、 update()方法、deleted()方法即可。