数据存储详解(四)及四大组件之一 之--->ContentProvider(内容提供者)

本文深入探讨了Android系统中的内容提供者机制,包括其作用、使用方法及常见应用场景。主要内容涵盖如何通过ContentResolver操作数据,以及如何创建自定义内容提供者为应用数据提供外部访问接口。此外,文章提供了实例代码演示如何获取手机联系人数据,并强调了权限设置的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.概述:

内容提供者(content provider)使一个应用程序的指定数据集提供给其他应用程序。这些数据可以存储在文件系统中、在一个SQLite数据库、或以任何其他合理的方式。内容提供者继承自ContentProvider 基类并实现了一个标准的方法集,使得其他应用程序可以检索和存储数据。然而,应用程序并不直接调用这些方法。相反,替代的是它们使用一个ContentResolver对象并调用它的方法。ContentResolver能与任何内容提供者通信,它与提供者合作来管理参与进来的进程间的通信。
只有需要在多个应用程序间共享数据是才需要内容提供者。例如,通讯录数据被多个应用程序使用,且必须存储在一个内容提供者中。如果你不需要在多个应用程序间共享数据,你可以直接使用SQLiteDataBase。

除了电话簿、短信、媒体库等都允许第三方程序进行访问,实现了跨程序数据共享的功能,使用的技术便是内容提供器。


注:content provider现在使用较少,只需要学会查找联系人、手机图片就OK。

2.用法:

1)两种用法:

  • 使用现有的内容提供器来读取和操作相应的程序中的数据;
  • 创建自己的内容提供器给程序的数据提供外部访问接口。

2) 步骤:
<1>通过Context中的getContentResolver()方法获取到ContentResolver类的实例。
<2>通过ContentResolver中的各种方法操作数据。
这里写图片描述
ContentResolver不接收表名参数,而使用Uri参数代替。它给内容提供器中的数据建立了唯一的标识,

Uri:
由权限和路径组成。
权限:区别不同的应用程序,一般为程序包名来命名。
路径:区别不同的数据表。通常添加到权限的后面。
例,标准格式:
content://com.example.app.provider/table1

注:得到的uri字符串需要解析成Uri对象。
Uri.parse(“content://com.example.app.provider/table1”);


总结方法:例:getContentResolver().query(,,,,);

3.范例:

功能:获得手机联系人:
(代码)
这里写图片描述
理解:
uri即为数据的地址,其形式是手机联系人的数据库地址为:
content:// com.android.contacts ,这里通过ContentContract来获得。
(权限设置)在manifest.xml中:

<uses-permission android:name="android.permission.READ_CONTACTS"/>

(效果演示):
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值