android--ContentProvider
程序员文章站
2022-03-21 22:16:04
提供自己程序中的数据继承ContentProvider+数据库class MyProvider extends ContentProvider{onCreate()query()insert()update()delete()getType()}...
提供自己程序中的数据
继承ContentProvider
class MyProvider extends ContentProvider{
onCreate() //作用:创建数据库
//增删改查 通过UriMatcher类的addUri方法添加能够匹配的内容
//假如传入的uri 为content://com.example.test.provider/table
UriMatcher matcher=new UriMatcher();
matcher.addURI("com.example.test","table",自定义常量);
//UriMatcher就可以匹配uri,并返回对应的自定义常量
public Cursor query(Uri uri,String[]column,String selection,String[]selectionArgs,String orderBy){
//与getContentResilver.query()方法对应
switch(matcher.match(uri)){
case 自定义常量:
//查询操作
...
break;
}
}
insert()//与查询操作相同
update()//与查询操作相同
delete()//与查询操作相同
getType()//作用:获得uri对象对应的MIME类型 格式规定:vnd.android.cursor.dir(item)/vnd.包名.表名
public String getType(Uri uri){
//假如传入的uri 为content://com.example.test.provider/table
return "vnd.android,cursor.dir/vnd.com.example.test.provider.table"
//假如传入的uri 为content://com.example.test.provider/table/1
return "vnd.android,cursor.item/vnd.com.example.test.provider.table"
}
}
在AndroidManifest.xml中注册
...
<provider
android:name=类地址
android:authrities=权限
android:exported="true">
</provider>
...
访问其他程序中的数据
ContentResolver
uri:标识符 content://包名.provider/表名
url:定位符
//查:
getContentResolver.query(uri,查询列名,约束条件,约束条件具体值,排序方式);
//增:
ContentValues value=new ContentValues();
value.put(列,值);
getContentResolver.insert(uri,values);
//改:
ContentValues value=new COntentValues();
value.put(列,值);
getContentResolver.update(uri,value,"列=?",new String[]{"原值"});
//删:
getContentResolver.delete(uri,"列=?",new String[]{"值"});
联系人 uri:ContactsContract.CommonDataKinds.Phone.CONTENT_URI
短信
多媒体
本文地址:https://blog.csdn.net/qq_33474233/article/details/107868833