Android之 内容提供器(1)——使用内容提供器访问其它程序共享的数据
(下面内容是阅读郭霖大神的《第一行代码》总结的)
1 概述
内容提供器是Android实现跨程序共享数据的标准方式。
内容提供器的的使用方法有两种,
一是使用已有的内容提供器对其他程序的数据进行访问;二是创建自己的内容提供器,将数据共享给其他程序。
2 使用已有的内容提供器
对于想访问内容提供器中共享数据的程序而言,ContentResolver类包含了它们想要进行的一切操作。
2.1 ContentResolver类简介
下面是Android API中对ContentResolver类的描述。
要获取ContentResolver类的实例,我们可以使用context中的getContentResolver().
和数据库操作一样,ContentResolver类也提供了对应增删改查的方法。
2.2 Uri
在介绍这些方法前我们需要了解内容URI。内容URI给内容提供器中的数据建立唯一标识(这部分取自郭大神的《第一行代码》)。
它主要有两部分组成,权限(authority)和路径(path)。
权限是用于对不同的应用程序做区分的,一般为了避免冲突,都会采用程序包名的方式来进行命名。
比如某个程序的包名是com.example.app,那么该程序对应的权限就可以命名为com.example.app. provider。
路径则是用于对同一应用程序中不同的表做区分的,通常都会添加到权限的后面。
比如某个程序的数据库里存在两张表,table1和table2,这时就可以将路径分别命名为/table1和/table2。
然后把权限和路径进行组合,内容URI就变成了com.example.app.provider/table1和com.example.app.provider/table2。
不过,目前还很难辨认出这两个字符串就是两个内容URI,我们还需要在字符串的头部加上协议声明。因此,内容URI最标准的格式写法如下:
content://com.example.app.provider/table1
content://com.example.app.provider/table2
得到内容URI,还需要将它解析成Uri的形式,才能作为参数,传入ContentResolve类中对应的增删改查的方法。
解析URI的方法非常简单
Uri uri = Uri.parse("content://com.example.app.provider/table1")
2.3 ContentResolver类中的增删改查
增:
ContentValues values = new ContentValues();
values.put("name","张三");
values.put("age",27);
getContentResolver().insert(uri, values);
删:
getContentResolver().delete(uri, "name = ?", new String[] { "张三" });
改:
ContentValues values = new ContentValues();
values.put("name","李四");
values.put("age",29);
getContentResolver().update(uri,values,"name = ? and age = ?",
new String[] = {"张三","28"});
查:
Cursor cursor = getContentResolver().query(uri,null, null, null, null);
掌握上面的几个方法,我们就可以使用内容提供器对其他程序共享的数据进行操作了。
Android之 内容提供器(1)——使用内容提供器访问其它程序共享的数据的更多相关文章
- Android学习--跨程序共享数据之内容提供其探究
什么是内容提供器? 跨程序共享数据之内容提供器,这是个什么功能?看到这个名称的时候最能给我们提供信息的应该是“跨程序”这个词了,是的重点就是这个词,这个内容提供器的作用主要是用于在不同的引用程序之间实 ...
- Android入门(十四)内容提供器-实现跨程序共享实例
原文链接:http://www.orlion.ga/661/ 打开SQLite博文中创建的 DatabaseDemo项目,首先将 MyDatabaseHelper中使用 Toast弹出创建数据库成功的 ...
- Android学习笔记(十九)——内容提供器
//此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! 内容提供器(Content Provider)主要用于在不同的应用程序之间实现数据共享的功能,它提供了一套完整 ...
- 5、Android-跨程序共享数据--内容提供器
Android数据持久化技术:文件存储.SharedPreferences存储.数据库存储 使用这些持久化技术保存的数据只能再当前的应用程序中访问 但是对于不同应用之间的可以实现跨程序数据共享的功能 ...
- Android开发环境——调试器 DDMS相关内容汇总
Android开发环境将分为SDK相关内容.Eclipse ADT相关内容.模拟器AVD相关内容.调试器DDMS相关内容.日志LogCat相关内容.连接驱动ADB相关内容.内存泄露检测工具MAT ...
- Android基础笔记(十四)- 内容提供者读取联系人
利用内容提供者读取联系人 利用内容提供者插入联系人 内容观察者的原理 利用内容观察者监听系统应用数据库或者自己应用数据库的变化 利用内容提供者读取联系人 读取联系人相对于读取短信来说就复杂非常多了,我 ...
- Android开发环境——连接驱动ADB相关内容汇总
Android开发环境将分为SDK相关内容.Eclipse ADT相关内容.模拟器AVD相关内容.调试器DDMS相关内容.日志LogCat相关内容.连接驱动ADB相关内容.内存泄露检测工具MAT相关 ...
- Android应用开发基础之九:内容提供者(ContentProvider)
内容提供者 应用的数据库是不允许其他应用访问的 内容提供者的作用:就是让别的应用访问到你的数据库 自定义内容提供者,继承ContentProvider类,重写增删改查方法,在方法中写增删改查数据库的代 ...
- android 从其他app接收分享的内容
Receiving Content from Other Apps[从其他app接收分享的内容] 就像你的程序能够发送数据到其他程序一样,其他程序也能够简单的接收发送过来的数据.需要考虑的是用户与你的 ...
随机推荐
- NOIP模拟赛11
T1 [HAOI2016]放棋子 https://daniu.luogu.org/problem/show?pid=3182 障碍交换行不影响 所以第i列有障碍的行换到第i行 然后错排公式 本校自测要 ...
- GridControl详解(十)BandedGridView
转换结果: 运行结果呈现:
- R3—日期处理
一. 问题引入 下面是一个房地产价格数据,现在想要提取2008年6月份的数据进行分析,在R中该如何操作呢? city price bedrooms squarefeet lotsize latitud ...
- stanfordCorenlp在python3中的安装使用+词性学习
1 安装 前言 Stanford CoreNLP的源代码是使用Java写的,提供了Server方式进行交互.stanfordcorenlp是一个对Stanford CoreNLP进行了封装的Pytho ...
- CTF AWD模式攻防Note
###0x01 AWD模式 Attack With Defence,简而言之就是你既是一个hacker,又是一个manager.比赛形式:一般就是一个ssh对应一个web服务,然后flag五分钟一轮, ...
- webconfig的配置解析
<?xml version="1.0"?> <!--注意: 除了手动编辑此文件以外,您还可以使用 Web 管理工具来配置应用程序的设置.可以使用 Visual S ...
- ltib安装过程中遇到好多问题,从网上转来的好多份总结
最近调试MPC5125的板子,第一步LTIB都装不过去,挫败感十足. LTIB的安装镜像来自于freescale的ltib-mpc5121ads-200906,是用于Ubuntu 10版本之前的,现在 ...
- js实现图片上传预览
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- 函数参数 f_arg, *args, **kwargs
当需要给函数传参时,可以通过运用不同的形参来传递,达到参数不同的使用目的. 简单来说:f_arg就是传递的第一个参数,类似于C++中的普通参数: *args 传递的是一个参数的list: **kwar ...
- WPF之模拟打开或关闭Windows功能
用WPF模拟打开或关闭Windows功能的实现方法其实很简单,主要用递归判断当前节点的子节点和父节点的选中状态就行了. 一.效果演示 先看看效果图: 二.部分代码 xaml代码: <TreeVi ...