第六章 访问ContentProvider共享数据
内容提供器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共享数据相关推荐
- 使用 ContentProvider 共享数据 访问与添加通讯录
1. 统一的数据访问方式 当应用继承ContentProvider类,并重写该类用于提供数据和存储数据的方法,就可以向其他应用共享其数据. 文件的操作模式中,通过指定文件的操作模式为Context.M ...
- 第7章 跨程序共享数据,探究
第7章 跨程序共享数据,探究 内容提供器 在上一章中我们学了Android数据持久化的技术,包括文件存储.SharedPreferences存 储.以及数据库存储.不知道你有没有发现,使用这些持久化技 ...
- 精通Web Analytics 2.0 (8) 第六章:使用定性数据解答”为什么“的谜团
精通Web Analytics 2.0 (8) 第六章:使用定性数据解答"为什么"的谜团 精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第六章:使用定性数 ...
- 第十六章--访问文件
本章所涵盖的主题即应用于磁盘文件系统的普通文件,也应用于块设备文件:将这两种文件系统都简单地统称为"文件". 访问文件的模式有多种.我们在本章考虑如下几种情况: ...
- 翻译Deep Learning and the Game of Go(8)第六章:给围棋数据设计神经网络(上)
本章包括(篇幅关系,本文章介绍前两个,后两个放在下个文章) 构建一个深度学习应用程序从数据出发来预测下一步的围棋落子点 引入Keras深度学习框架 了解卷积神经网络 构建分析空间围棋数据的神经网络 在 ...
- php sql server配置文件路径,云服务器初始化 第六章:更改MySQL数据文件存放路径...
一.停止服务 systemctl stop mysqld.service 二.创建数据目录 mkdir -p /web/data 三.将默认存放文件移动至数据目录 mv /var/lib/mysql ...
- 【Android 内存优化】Java 内存模型 ( Java 虚拟机内存模型 | 线程私有区 | 共享数据区 | 内存回收算法 | 引用计数 | 可达性分析 )
文章目录 一. Java 虚拟机内存模型 二. 程序计数器 ( 线程私有区 ) 三. 虚拟机栈 ( 线程私有区 ) 四. 本地方法栈 ( 线程私有区 ) 五. 方法区 ( 共享数据区 ) 1. 方法区 ...
- android 应用间共享数据,调用其他app数据资源
在Android里面每个app都有一个唯一的linux user ID,则这样权限就被设置成该应用程序的文件只对该用户可见,只对该应用程序自身可见:而我们可以使他们对其他的应用程序可见,可以通过Sha ...
- 《Head First Python》第六章--定制数据对象
先上数据集:Head First Python 数据集 第六章的数据在第五章的基础上加了两个属性:姓名和出生日期 james2.txt James Lee,2002-3-14,2-34,3:21,2. ...
最新文章
- 在Linux里安装和启动nginx的方法
- Spring JTA应用JOTM Atomikos III Atomikos
- 主机访问虚拟机中linux上的web服务
- 如何使用python numpy中的数组复制
- java中md5怎么实现的_java中md5算法的实现
- Goland如何断点调试Debug
- c++ overide
- 使用BlazeDS实现Java和Flex通信之hello world
- 站立会议(11月19日)
- excel 插入计算机用户名,Excel中进行设置个性化用户名的操作方法
- 纳税服务系统【角色与用户】
- python ftp下载文件_文件上传下载Python
- c++刷题(18/100)树
- amd u盘安装linux mint,安装Linux Mint 20后需要做的13件事
- ADS1115 STM32 HAL库驱动 CubeMX
- 8 个你不知道的 DOM 功能
- Java实现多张图片合并一张
- Java 响应对象详解
- XFCE下Screen Tearing问题的解决
- 遗传算法求解TSP问题(matlab实现)
热门文章
- scheduled只执行一次,有个定时任务突然不执行了?
- Git如何忽略已经上传的文件或文件夹?
- Asp.Net把word文件转换为html文件
- 资源管理与调度系统-YARN资源隔离及以YARN为核心的生态系统
- bitcoin转账api,python2.7
- POJ 2888 Magic Bracelet ——Burnside引理
- linux满负荷运行tail,linux内核tcp调优规范与方案
- python画互动图_利用Python画出运动图像
- win10关机后自动重启_win10电脑关机后自动开机怎么解决
- android 检测网络ftp,Android端与Android端利用WIFI进行FTP通信