ContentProvider是不同应用之间数据交换的标准API
作为四大应用组件之一,ContentProvider也需要在AndroidManifest.xml文件中进行配置
当应用程序通过ContentProvider
暴露自己的数据操作接口之后,不管该APP是否启动,其他程序都可以操作该APP的内部数据
数据共享标准ContentProvider
ContentProvider以某种Uri的形式对外提供数据,允许其他应用访问或修改数据;
其他应用使用ContentResolver根据Uri去访问操作指定数据
向Android系统中注册ContentProvider只要在<application.../>元素下添加如下子元素即可(需要为其绑定一个Uri)
<provider android:name=“.DictProvider"
android:authorities=“com.example.providers.dictprovider"
android:exported=“true”/>
(第三个属性指定是否允许其他应用调用)
这样注册之后,其他应用就可通过该Uri来访问DictProvider所暴露的数据了
public boolean onCreate()
|
|
public Uri insert(Uri uri, ContentValues values)
|
根据该Uri插入values对应的数据
|
public int delete(Uri uri, String selection, String[] selectionArgs)
|
根据Uri删除select条件所匹配的全部记录
|
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs, String sortOrder)
|
根据Uri修改select条件所匹配的全部记录
|
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)
|
根据Uri查询出select条件所匹配的全部记录,其中projection就是一个列名列表,表明只选择出指定的数据列
|
public String getType(Uri uri)
|
返回当前Uri所代表的数据的MIME类型。多条记录,MIME以vnd.android.cursor.dir/开头;单条记录,则以vnd.android.cursor.item/开头
|
Uri
content://com.example.provider.dictprovider/word/2/item
协议 | authority | 资源部分(数据部分)
为了将一个字符串转换成Uri,Uri工具类提供了parse()静态方法,例如如下代码即可将字符串转换为Uri:
Uri uri = Uri.parse(“
content://com.example.provider.dictprovider/word/2/item
");
使用ContentResolver操作数据
获取CR的方法为getContentResolver(),获取CR对象之后就可以调用ContentResolver的如下方法来操作数据了
insert(Uri uri, ContentValues values)
|
向Uri对应的ContentProvider中插入values对应的数据
|
delete(Uri uri, String where, String[] selectionArgs)
|
删除Uri对应的ContentProvider中where提交匹配的数据
|
update(Uri uri, ContentValues values, String where, String[] selectionArgs)
|
更新Uri对应的ContentProvider中where提交匹配的数据
|
query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)
|
查询Uri对应的ContentProvider中where提交的匹配数据
|