使用场景:
- 使用现有的内容提供器来读取和操作应用程序中的数据
- 创建自己的内容提供器,为自己的应用提供外部访问接口
-
使用现有的内容提供器
-
ContentResolver类提供了一系列对数据进行CRUD进行操作的方法。和SQLite数据库操作的方法相似,但是参数有区别
- 添加数据:insert
- 更新数据:update
- 删除数据:delete
- 查询数据:query
-
如何定位到该内容提供器?由内容URI为内容提供器中的数据建立唯一标识符。
- authority:一般会使用程序包名
- path:对同一应用程序的不同表做区分,通常会添加到authority后面
//标准格式.com.example.app.provider为包名,table1为表名。后面可以继续添加id值 content://com.example.app.provider/table1 //解析URI字符串 Uri uri=Uri.parse("content://com.example.app.provider/table1");
-
-
创建自己的内容提供器:
- 步骤1:新建一个继承自ContentProvider的类,并重写以下六个抽象方法。
- onCreate:初始化内容提供器,如完成对数据库的创建和升级
- query:返回外部应用需要的查询数据
- insert:向内容提供器添加数据
- update:更新内容提供器中已有的数据
- delete:从内容提供器中删除数据
- getType:根据传入的内容URI来返回相应的MIME类型
- 步骤2:新建一个UriMatcher类,设置URI值和对应操作的匹配关系。判断调用方期待访问的是那张表,对表中数据进行操作
- 步骤1:新建一个继承自ContentProvider的类,并重写以下六个抽象方法。