内容提供器Content Provider       //Provider    n. 供应者;养家者

主要用于在不同的应用程序之间实现数据共享功能

用法:    1.使用现有的内容提供器来读取和操作相应程序中的数据

通过ContentResolver实现增删改查。 //resolver  n. 溶剂;[电子] 分解器;下决心者

ContentResolver contentResolver = context.getContentResolver

通过URI来指明所要操作的数据;

增删改查方法基本类似与SQLiteDatabase中的增删改差,只不过把第一个参数改为了URI。

查询数据:

通过ContentResolver的query()方法返回一个Cursor对象

@Nullable Cursor query(@NonNull Uri uri, @Nullable String[] projection,

@Nullable String selection, @Nullable String[] selectionArgs,

@Nullable String sortOrder)

参数:    1. uri 查询某个程序下的某一张表

2. projection 查询的列名     //projection n. 投射;规划;突出;发射;推测

3. selection where的约束条件

4.selectionArgs 为where中的占位符提供具体的值

5.sortOrder 指定查询结果的排序方式

返回一个Cursor对象

插入数据:

@Nullable Uri insert(@NonNull Uri url, @Nullable ContentValues values)

参数:ContentValues  待插入一个ContentValues对象类型的新纪录

返回新纪录的Uri

修改数据:

int update(@NonNull Uri uri, @Nullable ContentValues values,

@Nullable String where, @Nullable String[] selectionArgs)

参数:   @Nullable ContentValues values  待修改的记录值

@Nullable String where              指定匹配记录的条件

@Nullable String[] selectionArgs  指定where中占位符的值

返回被修改记录的条数

删除数据:

int delete(@NonNull Uri url, @Nullable String where,

@Nullable String[] selectionArgs)

参数:    @Nullable String where                    指定匹配记录的条件

@Nullable String[] selectionArgs  指定where中占位符的值

返回被删除记录的条数

读取系统联系人案例代码:

 1 /**
 2  * 获得联系人信息并放入contactsList
 3  */
 4 private void readContacts()
 5 {
 6     Cursor cursor = null;// cusor n. 游标
 7
 8     /**
 9      * 查询联系人数据放入cusor中
10      *  参数:    1. uri 查询某个程序下的某一张表
11      *      2. projection 查询的列名     //projection n. 投射;规划;突出;发射;推测
12      *      3. selection where的约束条件
13      *      4.selectionArgs 为where中的占位符提供具体的值
14      *      5.sortOrder 指定查询结果的排序方式
15      */
16     Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
17     ContentResolver contentResolver = getContentResolver();
18     cursor = contentResolver.query(uri, null, null, null, null);
19     try
20     {
21         while (cursor.moveToNext())
22         {
23             // 获取联系人姓名
24             String name = cursor.getString(cursor.getColumnIndex(
25                             ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
26             // 获取联系人手机号
27             String number = cursor.getString(cursor.getColumnIndex(
28                     ContactsContract.CommonDataKinds.Phone.NUMBER));
29
30             contactsList.add(name + " " + number);
31         }
32
33     } catch (Exception e)
34     {
35         e.printStackTrace();
36     } finally
37     {
38         // 关闭cursor
39         if (cursor != null)
40         {
41             cursor.close();
42         }
43     }
44 }

**注意:在AndroidManifest.xml中声明读取系统取联系人权限

<!-- 声明读取系统取联系人权限 -->

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

用法:    2.创建自己的内容提供器给我们程序的数据提供外部接口

转载于:https://www.cnblogs.com/starman/p/5043242.html

第六章 访问ContentProvider共享数据相关推荐

  1. 使用 ContentProvider 共享数据 访问与添加通讯录

    1. 统一的数据访问方式 当应用继承ContentProvider类,并重写该类用于提供数据和存储数据的方法,就可以向其他应用共享其数据. 文件的操作模式中,通过指定文件的操作模式为Context.M ...

  2. 第7章 跨程序共享数据,探究

    第7章 跨程序共享数据,探究 内容提供器 在上一章中我们学了Android数据持久化的技术,包括文件存储.SharedPreferences存 储.以及数据库存储.不知道你有没有发现,使用这些持久化技 ...

  3. 精通Web Analytics 2.0 (8) 第六章:使用定性数据解答”为什么“的谜团

    精通Web Analytics 2.0 (8) 第六章:使用定性数据解答"为什么"的谜团 精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第六章:使用定性数 ...

  4. 第十六章--访问文件

    本章所涵盖的主题即应用于磁盘文件系统的普通文件,也应用于块设备文件:将这两种文件系统都简单地统称为"文件".         访问文件的模式有多种.我们在本章考虑如下几种情况:   ...

  5. 翻译Deep Learning and the Game of Go(8)第六章:给围棋数据设计神经网络(上)

    本章包括(篇幅关系,本文章介绍前两个,后两个放在下个文章) 构建一个深度学习应用程序从数据出发来预测下一步的围棋落子点 引入Keras深度学习框架 了解卷积神经网络 构建分析空间围棋数据的神经网络 在 ...

  6. php sql server配置文件路径,云服务器初始化 第六章:更改MySQL数据文件存放路径...

    一.停止服务 systemctl stop mysqld.service 二.创建数据目录 mkdir -p /web/data 三.将默认存放文件移动至数据目录 mv /var/lib/mysql ...

  7. 【Android 内存优化】Java 内存模型 ( Java 虚拟机内存模型 | 线程私有区 | 共享数据区 | 内存回收算法 | 引用计数 | 可达性分析 )

    文章目录 一. Java 虚拟机内存模型 二. 程序计数器 ( 线程私有区 ) 三. 虚拟机栈 ( 线程私有区 ) 四. 本地方法栈 ( 线程私有区 ) 五. 方法区 ( 共享数据区 ) 1. 方法区 ...

  8. android 应用间共享数据,调用其他app数据资源

    在Android里面每个app都有一个唯一的linux user ID,则这样权限就被设置成该应用程序的文件只对该用户可见,只对该应用程序自身可见:而我们可以使他们对其他的应用程序可见,可以通过Sha ...

  9. 《Head First Python》第六章--定制数据对象

    先上数据集:Head First Python 数据集 第六章的数据在第五章的基础上加了两个属性:姓名和出生日期 james2.txt James Lee,2002-3-14,2-34,3:21,2. ...

最新文章

  1. 在Linux里安装和启动nginx的方法
  2. Spring JTA应用JOTM Atomikos III Atomikos
  3. 主机访问虚拟机中linux上的web服务
  4. 如何使用python numpy中的数组复制
  5. java中md5怎么实现的_java中md5算法的实现
  6. Goland如何断点调试Debug
  7. c++ overide
  8. 使用BlazeDS实现Java和Flex通信之hello world
  9. 站立会议(11月19日)
  10. excel 插入计算机用户名,Excel中进行设置个性化用户名的操作方法
  11. 纳税服务系统【角色与用户】
  12. python ftp下载文件_文件上传下载Python
  13. c++刷题(18/100)树
  14. amd u盘安装linux mint,安装Linux Mint 20后需要做的13件事
  15. ADS1115 STM32 HAL库驱动 CubeMX
  16. 8 个你不知道的 DOM 功能
  17. Java实现多张图片合并一张
  18. Java 响应对象详解
  19. XFCE下Screen Tearing问题的解决
  20. 遗传算法求解TSP问题(matlab实现)

热门文章

  1. scheduled只执行一次,有个定时任务突然不执行了?
  2. Git如何忽略已经上传的文件或文件夹?
  3. Asp.Net把word文件转换为html文件
  4. 资源管理与调度系统-YARN资源隔离及以YARN为核心的生态系统
  5. bitcoin转账api,python2.7
  6. POJ 2888 Magic Bracelet ——Burnside引理
  7. linux满负荷运行tail,linux内核tcp调优规范与方案
  8. python画互动图_利用Python画出运动图像
  9. win10关机后自动重启_win10电脑关机后自动开机怎么解决
  10. android 检测网络ftp,Android端与Android端利用WIFI进行FTP通信