ContentProvider的使用
第一步:在AndroidManifest.xml中添加
?
?<provider android:name=".MyContentProvider" android:authorities="cn.edu.mytest"></provider>
?
第二步:继承ContentProvider
?
?
public void accessContentProvider()//该方法可以在其他应用程序中调用{Uri uri=Uri.parse("content://cn.edu.mytest/person");ContentResolver reslover=this.getContext().getContentResolver();ContentValues values=new ContentValues();values.put("name","zhangsan");values.put("time", "2012");reslover.insert(uri, values);//会调用ContentProvider中的insert()}public void accessContentProviderDelete()//该方法可以在其他应用程序中调用{Uri uri=Uri.parse("content://cn.edu.mytest/person/1");ContentResolver reslover=this.getContext().getContentResolver();reslover.delete(uri,null,null);}?
?
?
?
?
?
?
?
CotentProvider:可以把应用中的xml/txt/db/数据对外共享
?
使用ContentProvider可以统一数据的访问方式
?
写一个PersonProvider类继承ContentProvider
在配置清单中添加配置信息
<provider android:name=".PersonProvider"?
?
android:authorities="cn.edu.personprovide(标志)>
?
?
Uri代表了要操作的数据,Uri主要包含了两部分信息:1、需要操作的ContentProvider,
2、对ContentProvider中的什么数据进行操作 ??
括号代表注释
content:(这个是schema)//cn.edu.personprovide(要操作的主机名或者
?
authority)/person/10(person/1是路径,1是ID)
ContentProvider的schema已经由Android所规定,schema为:content//主机名(或叫
?
Authority)用于唯一标志这个Contentprovider,外部调用者可以根据这个标志来找到
?
它,路径可以用来表示我们要操作的数据,路径构建应根据业务而定
?
?
?
?
监听ContentProvider中数据的变化
A应用向ContentProvider中添加了一条数据
ContentProvidr发出数据变化通知B应用
在继承ContentProvider的类得inset方法中添加
this.getContext().getContentResolver().notifyChange(uri, null);//发出数据变
?
化通知
?
?
B应用要处于运行状态
在B应用的Activity的中onCreate方法中
this.getContentResolver().registerContentObserver(Uri,true,new?
?
PersonContent());
?
private class PersonContentObserver extedns ContentObserver{
在onChange方法中()
{
Uri uri=Uri.prase("content://cn.edu.test/product");
getContentResolver.qeruy(uri,null,null,"personid desc limit 1");
}
}