内容提供程序
内容提供程序
1.定义
提供程序是 Android 的一个应用组件,通常提供自己的 UI 来管理数据。 内容提供程序管理对结构化数据集的访问。它们封装数据,并提供用于定义数据安全性的机制。 内容提供程序是连接一个进程中的数据与另一个进程中运行的代码的标准界面。
2.内容提供程序cs架构
ContentResolver 是提供程序客户端,从应用的 Context
中的获取。
ContentProvider 是提供程序服务端。提供程序对象从客户端接收数据请求,执行请求的操作并返回结果。
3.何时使用内容提供程序?
- 与其他应用共享数据时才有必要。
- 不过,您需要通过自己的提供程序在您自己的应用中提供自定义搜索建议。
- 如果您想将复杂的数据或文件从您的应用复制并粘贴到其他应用中,也需要创建您自己的提供程序。
4.可处理跨进程通信?
提供程序与提供程序客户端共同提供一致的标准数据界面,该界面还可处理跨进程通信并保护数据访问的安全性。
客户端应用进程中的 ContentResolver
对象和拥有提供程序的应用中的 ContentProvider
对象可自动处理跨进程通信。
5.提供程序把数据放在关系型数据库中
- 内容提供程序以一个或多个表(与在关系型数据库中找到的表类似)的形式将数据呈现给外部应用。
- 行表示提供程序收集的某种数据类型的实例,行中的每个列表示为实例收集的每条数据。
- 提供程序无需具有主键,也无需将
_ID
用作其主键的列名称(如果存在主键)。 但如果提供程序的数据与ListView
绑定,则其中一个列名称必须是_ID
。
6.ContentResolver
通过uri和相关sql语句增删改查数据库中的数据
ContentProvider.
query(Uri,projection,selection,selectionArgs,sortOrder)
参数如下:
query() 参数 | SELECT 关键字/参数 | 说明 |
---|---|---|
Uri |
FROM table_name |
Uri 映射至提供程序中名为 table_name 的表。 |
projection |
col,col,col,... |
projection 是要查询的列的数组。简称投影。 |
selection |
WHERE col = value |
selection 会指定选择行的条件。 |
selectionArgs |
(没有完全等效项。选择参数会替换选择子句中 ? 占位符。) |
|
sortOrder |
ORDER BYcol,col,... |
sortOrder 指定行在返回的 Cursor 中的显示顺序。 |
7.内容 URI
提供程序通过 URI向外界提供数据。如: content://user_dictionary/words ,其中 :
user_dictionary
字符串是提供程序的授权,words
字符串是表的路径content:// 是uri固定部分,
始终显示,并将此标识为内容 URI。
注:Uri
和 Uri.Builder
类包含根据字符串构建格式规范的 URI 对象的便利方法。 ContentUris
包含一些可以将 ID 值轻松追加到 URI 后的方法。 可使用 withAppendedId()
将 ID 追加到 UserDictionary 内容 URI 后。