(下面内容是阅读郭霖大神的《第一行代码》总结的)

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)——使用内容提供器访问其它程序共享的数据的更多相关文章

  1. Android学习--跨程序共享数据之内容提供其探究

    什么是内容提供器? 跨程序共享数据之内容提供器,这是个什么功能?看到这个名称的时候最能给我们提供信息的应该是“跨程序”这个词了,是的重点就是这个词,这个内容提供器的作用主要是用于在不同的引用程序之间实 ...

  2. Android入门(十四)内容提供器-实现跨程序共享实例

    原文链接:http://www.orlion.ga/661/ 打开SQLite博文中创建的 DatabaseDemo项目,首先将 MyDatabaseHelper中使用 Toast弹出创建数据库成功的 ...

  3. Android学习笔记(十九)——内容提供器

    //此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! 内容提供器(Content Provider)主要用于在不同的应用程序之间实现数据共享的功能,它提供了一套完整 ...

  4. 5、Android-跨程序共享数据--内容提供器

    Android数据持久化技术:文件存储.SharedPreferences存储.数据库存储 使用这些持久化技术保存的数据只能再当前的应用程序中访问 但是对于不同应用之间的可以实现跨程序数据共享的功能 ...

  5. Android开发环境——调试器 DDMS相关内容汇总

       Android开发环境将分为SDK相关内容.Eclipse ADT相关内容.模拟器AVD相关内容.调试器DDMS相关内容.日志LogCat相关内容.连接驱动ADB相关内容.内存泄露检测工具MAT ...

  6. Android基础笔记(十四)- 内容提供者读取联系人

    利用内容提供者读取联系人 利用内容提供者插入联系人 内容观察者的原理 利用内容观察者监听系统应用数据库或者自己应用数据库的变化 利用内容提供者读取联系人 读取联系人相对于读取短信来说就复杂非常多了,我 ...

  7. Android开发环境——连接驱动ADB相关内容汇总

     Android开发环境将分为SDK相关内容.Eclipse ADT相关内容.模拟器AVD相关内容.调试器DDMS相关内容.日志LogCat相关内容.连接驱动ADB相关内容.内存泄露检测工具MAT相关 ...

  8. Android应用开发基础之九:内容提供者(ContentProvider)

    内容提供者 应用的数据库是不允许其他应用访问的 内容提供者的作用:就是让别的应用访问到你的数据库 自定义内容提供者,继承ContentProvider类,重写增删改查方法,在方法中写增删改查数据库的代 ...

  9. android 从其他app接收分享的内容

    Receiving Content from Other Apps[从其他app接收分享的内容] 就像你的程序能够发送数据到其他程序一样,其他程序也能够简单的接收发送过来的数据.需要考虑的是用户与你的 ...

随机推荐

  1. 在服务器上运行Jar包

    在服务器上运行Jar包 并且该Jar包依赖其他的Jar文件的时候,采用如下格式 java -Djava.ext.dirs=你依赖的Jar文件路径 -jar 你要运行的Jar文件 包名+类名 例如: j ...

  2. 写文章 使用conda管理python环境

    使用conda管理python环境

  3. 还不会做! 树上的gcd 树分治 UOJ33

    题目链接:http://uoj.ac/problem/33 题解链接:http://vfleaking.blog.uoj.ac/blog/38 现在感觉到了做OI的层层递进的思路的伟大之处,作为一个大 ...

  4. Let's Encrypt 免费通配 https 签名证书 安装方法

    安装环境 centOs7 主要通过 acme.sh (bash脚本)来注册签名 git地址:https://github.com/Neilpang/acme.sh 申请证书流程 1.申请证书-> ...

  5. 彻底解决mysql中文乱码

    mysql是我们项目中非常常用的数据型数据库.但是因为我们需要在数据库保存中文字符,所以经常遇到数据库乱码情况.下面就来介绍一下如何彻底解决数据库中文乱码情况. 1.中文乱码 1.1.中文乱码 cre ...

  6. Count on a tree(SPOJ COT + 树上第k大 + 主席树 + LCA)

    题目链接:https://www.spoj.com/problems/COT/en/ 题目: 题意: 给你一棵有n个节点的树,求节点u到节点v这条链上的第k大. 思路: 我们首先用dfs进行建题目给的 ...

  7. Hadoop笔记之搭建环境

    Hadoop的环境搭建分为单机模式.伪分布式模式.完全分布式模式. 因为我的本本比较挫,所以就使用伪分布式模式. 安装JDK 一般Linux自带的Java运行环境都是Open JDK,我们到官网下载O ...

  8. 蓝色的cms企业记账管理后台模板源码——后台

    链接:http://pan.baidu.com/s/1bpxKGBP 密码:suda

  9. 一文轻松搞懂redis集群原理及搭建与使用

    今天早上由于zookeeper和redis集群不在同一虚拟机导致出了点很小错误(人为),所以这里总结一下redis集群的搭建以便日后所需同时也希望能对你有所帮助. 笔主这里使用的是Centos7.如果 ...

  10. 利用pycharm运行scrapy以及scrapy的配置

    1.安装两个whl文件 https://pypi.python.org/pypi/Twisted 下载Twisted的whl文件 https://pypi.python.org/pypi/Scrapy ...