ContentProvider

作用
向其他应用提供数据,数据的存储方式可以是数据库、XML文件、普通文件等形式,但内容提供者负责把数据对外进行提供;统一数据访问方式;

URI
统一资源标识符,用来标识某一资源;

URI组成
scheme:类似于HTTP,在android规定为content://
authority:主机名,类似于HTTP中的域名
path:数据,类似于HTTP中的请求路径

UriMatcher:用于匹配 Uri
static  final  int  CODE = 1;
static  final  int  CODES = 2;
static  final  String  AUTHORITY = “com.dongzi”;
static  final  UriMatcher  uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
uriMatcher.addURI(AUTHORITY,”person”,CODE);//匹配context://com.dongzi/person,返回1
uriMatcher.addURI(AUTHORITY,”person/#”,CODES);//匹配context://com.dongzi/person/数字,返回2

ContentUris:用于获取Uri路径后面的ID部分,常用方法如下

 Uri  uri  =  Uri.parse(“content://”+AUTHORITY+”/persion”);
Uri  newUri  =  ContentUris.withAppendedId(uri,1234);//生成后的URI是在/persion后追加/1234
 long  id = ContentUris.parseId(Uri.parse(“content://www.dongzi/person/1234”));//得到1234

ContentResolver:提供的方法如下
delete(Uri,String,String[])  getType(Uri)   insert(Uri,ContentValues)  onCreate()
query(Uri,String[],String,String[])  update(Uri,ContentValues,String,String[])

ContentProvider开发步骤
第一步:继承ContentProvider并重写对应方法onCreate/insert/delete/update/query/
getType,其中getType如果操作的数据属于集合类型,那么MIME类型应该以”vnd.android.cursor.dir/”开头;getType如果操作的数据属于非集合,那么MIME类型应该以”vnd.android.cursor.item/”开头;
第二步:在清单配置文件中进行配置

第三步:在ContentProvider发生数据变化需要通知ContentResolver
getContext().getContentResolver().notifyChange(uri,null);
第四步:注册监听器,观察ContentProvider数据变化
getContentResolver().registerContentObserver(

Uri.parse(“content://com.dongzi/person”),
true,
new ContentObserver(new Handler){

Public  void  onChange(){

此处进行相应的业务处理

}

}

);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值