内容提供器
内容提供器(Content Provider)
是Android跨程序共享数据
的标准方式,内容提供器可以选择对哪一部分数据共享,从而不会有泄露的风险。
用法
内容提供器的用法一般有两种:
- 一种是使用现有的内容提供其
读取操作
相应应用程序的数据【比如系统电话簿,短信等】 - 另一种是创建自己的内容提供器提
供外部访问接口
- 对每一个应用程序来说,如果想要访问内容提供器中共享的数据,就一定要借助
ContentResolver
类,可以通过Context
中的getContentResolver()
方法获取到该类的实例。 ContentResolver
中提供了一系列的方法用于对数据进行CURD操作:insert()
方法用于添加数据update()
方法用于更新数据delete()
方法用于删除数据query()
方法用于查询数据
内容URI
: 内容URI 给内容提供器中的数据建立了唯一标识符,如context://com.example.app.provider/table1
ContentResolver
的增删改查方法都接收一个内容URI
作为第一个参数
Uri
URI
,每一个Content Provider
都对外提供一个 能够唯一标识自己 数据集(data set
)的公开URI, 如果一个Content Provider
管理多个数据集,其将会为每个数据集分配一个独立的URI。所有的Content Provider
的URI
都以"content://"
开头,其中"content:"
是用来标识数据是由Content Provider
管理的 schema
基本用法
1、查
例如,查询table
表的数据:
1 | Uri uri = Uri.parse("content://包名.provider/table") |
2.增
1 | ContentValues values = new ContentValues(); |
3.其他的都类似于前面的数据库操作
Demo code
下面实现一个读取手机联系人的demo:
- 在manifest中添加读取联系人权限
1 | <uses-permission android:name="android.permission.READ_CONTACTS"/> |
- 布局(简单的一个listview)
1 |
|
- 主活动(这里
query()
的内容URI对象
已经被解析出来了)
1 | public class MainActivity extends AppCompatActivity { |