内容提供者(ContentProvider)
数据库文件一般是私有的(-rw-rw----),其他应用程序无法访问该程序私有的数据库。
目的:保证应用程序数据库的安全,每个应用程序都是独立的,不可以操作另外一个应用程序数据库的数据。
有一些特殊的需求,需要把自己私有的数据库暴露给别的应用程序,让别的应用程序访问。
内容提供者ContentProvider就是做这件事情的。
内容提供者ContentProvider创建的步骤
- MyContentProvider extends ContentProvider
在清单文件配置内容提供者(节点为provider,其中name属性要写ContentProvider的包名与类名,authorities属性意为主机名,可以随便写,不过最好顾名思义。)配置完整类路径、主机名。
android:authorities="com.example.db.persondb"
android:name="com.example.test_contentprovider.MyContentProvider">MyContentProvider定义一些数据操作的URI,利用UriMatcher指定一些特殊的路径
//content://com.example.db.persondb/query 查询
//content://com.example.db.persondb/insert 添加
//content://com.example.db.persondb/update 修改
//content://com.example.db.persondb/delete 删除- 实现MyContentProvider 的增删改查的方法(根据业务需求去实现)
实现了query方法。
- 检查uri路径是否正确
- 如果正确则return一个Cursor
如果不正确抛出一个异常
如何使用ContentProvider查询数据
- 获取ContentProvider的解析器ContentResolver
ContentResolver resolver = getContentResolver(); 调用resolver的增删改查方法
---恢复内容结束---