当前位置: 首页 > news >正文

探究ContentProvider(一)

探究ContentProvider(一)

1. 简介

ContentProvider是Android官方推荐的进行跨程序数据共享的技术,相比较Sharedpreferences和文件读写更加安全、可靠。常见使用ContentProvider技术进行跨程序数据共享的信息包括通讯录、手机音频、短信内容等。ContentProvider可以选择共享部分数据,而不必要全部共享。

2. 使用场景

1、通过ContentProvider读取或操作相应程序提供的数据。
2、自定义ContentProvider,给自己程序中的数据提供外部访问接口。

3. ContentResolver

  1. 简介

实现读取以及增删改ContentProvider提供的数据,需要解决ContentResolver

  1. 程序中获取ContentResolver

程序中通过Context#getContentResolver方法获取ContentResolver
ContentResolver中包含insert、delete、update、query方法,分别对应执行数据的增删改查操作

4. URI

4.1. URI是什么

类似于SQLite,ContentProvider需要管理数据,SQLite中使用的是数据库和数据表,一个表中数据就是某一类的数据,而ContentProvider使用的是程序包名+路径(path),这两者组合在一起就是一个URI;

4.2. URI的示例

URI分为authority+path部分,前者形式为包名.provider,后者形式为/table1,组合在一起为例如com.example.app.provider/table1;

ContentProvider使用的URI需要在URI的内容开头加上content://,以和别的URI进行区分,那么完整的URI内容为content://com.example.app.provider/table1;

4.3. 程序中使用URI

在程序中,使用URI需要把它转换成Uri对象,代码:

val uri: Uri = Uri.parse("content://com.example.app.provider/table1")

5. 操作ContentProvider数据

5.1. 查询(query)方法

fun query(uri: Uri,                    // 要查询的内容URIprojection: Array<String>?,  // 要返回的列名数组selection: String?,          // WHERE条件子句selectionArgs: Array<String>?, // WHERE条件的参数值sortOrder: String?           // 排序方式
): Cursor?

参数说明:
uri: 内容提供者的唯一标识,决定查询哪个表或数据源

projection: 要返回的列名数组,null表示返回所有列

// 示例:只返回name和email列
val projection = arrayOf("name", "email")

selection: WHERE条件,不包含WHERE关键字

// 示例:查询age大于18的记录
val selection = "age > ? AND city = ?"

selectionArgs: WHERE条件的参数值,用于替换selection中的?

val selectionArgs = arrayOf("18", "Beijing")

sortOrder: 排序规则

val sortOrder = "name ASC, age DESC" // 按姓名升序,年龄降序

5.2. 插入(insert)方法

fun insert(uri: Uri, values: ContentValues?): Uri?

参数说明:
uri: 要插入数据的目标URI

values: 要插入的数据,使用ContentValues包装

val values = ContentValues().apply {put("name", "张三")put("age", 25)put("email", "zhangsan@example.com")
}

5.3. 更新(update)方法

fun update(uri: Uri,values: ContentValues?,selection: String?,selectionArgs: Array<String>?
): Int

参数说明:
uri: 要更新数据的目标URI(可以包含特定记录的ID)

values: 要更新的字段和值

selection: WHERE条件,确定更新哪些记录

selectionArgs: WHERE条件的参数值

5.4. 删除(delete)方法

fun delete(uri: Uri,selection: String?,selectionArgs: Array<String>?
): Int

参数说明:
uri: 要删除数据的目标URI(可以包含特定记录的ID)

selection: WHERE条件,确定删除哪些记录

selectionArgs: WHERE条件的参数值

http://www.dtcms.com/a/404248.html

相关文章:

  • h5网站开发模板搜索引擎优化包括哪些内容
  • VMware+RockyLinux+ikuai+docker+cri-docker+k8s 自用 实践笔记(一)
  • 做网站个人怎么签合同iis怎么加载网站
  • 深圳荷坳网站建设公司wordpress文章多个分类显示不出来
  • 拼多多网站首页套模板做网站流程
  • 字符串及正则表达式
  • 成都公司做网站多少钱马云是做网站的
  • 如何将自己做的网站江门网站制作报价
  • tensorrt安装 2025
  • 营销型企业网站建设方案旅游网站的网页设计
  • 医疗养生管理系统(AI问答、WebSocket及时通讯、Echarts图形化分析)
  • D触发器、JK触发器以及单稳态触发器、非稳态多谐振荡器在 XPU 设计中的使用情况
  • 没有网站可以做seo吴忠市建设局官方网站
  • 网站首页布局设计教程辽宁建设科技信息网网站
  • 纯静态网站品牌建设和品牌打造对企业的意义
  • 企业经营不是赌短期
  • 合肥市做网站的公司有哪些中国字体设计网站
  • vue 使用leaflet加载天地图
  • 网站做宣传网站建设钟振森
  • 怎么选择做网站的公司网店推广发展趋势有哪些
  • 做网站是如果盈利的河南 网站建设
  • 3g手机网站源码国外模板wordpress
  • 纯文字网站设计网站做备案关停会显示什么
  • 贵阳seo网站推广技巧新手做网站做那个
  • JVM 的垃圾处理机制
  • 马克杯网站开发做淘宝客需要自己建网站吗
  • 广州网站建设 推广公司哪家好手机网站制作器
  • 本地使用 Git 向 Gitee 推送项目的全过程、涉及的命令以及每个命令的作用
  • 【0基础学算法】前缀和(算法原理+经典例题)
  • 数据开放网站建设内容wordpress页面分页