1.)定义一个子类 SubContentProvider 继承ContentProvider类
2.)在Manifest.xml中定义provider
<providre
android:name="com.liubin.test.SubContentProvider " //实现ContentProvider类的子类的包名加类名
android:authorities="com.liubin.test.providerPerson" />// 内容是自定义的 包名加用途
3.)在SubContentProvider 定义一个UriMatcher matcher 用来匹配定义的uri规则
4.)定义规则
uri: content:// com.liubin.db.personprovider/query 查询
content:// com.liubin.db.personprovider/query# // "#"代表long型数据
long id = ContentUris.parseId(uri); // 获取# 所代表的的数据
matcher.addURI(" com.liubin.db.personprovider ",“query”,"QUERY") //QUERY int型 匹配成功后的返回码
5.)oncreate(){}中初始化一个dbhelper的对象来进行数据库操作
6.)重写query、insert、等方法
public Cursor query(Uri uri,...){
if(matcher.match(uri) == QUERY){
SQLiteDatabase db = dbhelper.getReadaleDatabase();
db.query("tableName",.......);
}else{
//给出uri错误的提示
}
}
利用dbhelper的对象来进行数据库操作
注: 此处数据库不要关闭、contentProvider的机制会自动关闭db
7.)在另外一个apk 的 MainActivity中
创建ContentResolver 对象 resolver = getContentResolver();
Uri uri = Uri.parse(“content:// com.liubin.db.personprovider/query ”);
Cursor cursor = resolver.query(uri,......):
从cursor中取数据。。。然后爱干嘛干嘛
cursor.close();
ContentProvider 其实就是一个中间人
apk AA 通过 BB apk 的 contentProvider 去获取apk BB的数据库里的数据