第16天

Content Provider

一, 什么是Content Provider?

内容提供者 Android四大主件之一 :短信记录 通讯录 联系人 自定义

>Content Provider  所有程序间数据的存储和检索的桥梁 把各个程序里的数据共享
各个程序间 数据共享的唯一途径 (Android 没有提供一块独立的空间 将各个程序的数据共享
只能通过 内容提供者 共享数据)

二, 作用

将自己程序的私有数据 提供里一套对外的访问接口(增,删,改,查)

是基于Uri向外提供数据访问接口

使用:
Content Provider 提供私有数据
Uri:统一资源标识符 (路径)
ContentResolver:内容解析器

三,URI 统一资源标识符

格式:content://应用程序包名.provider/表名(一般情况)

四, 访问Content Provider 提供的数据

1,获取CntentResolver对象

2,通过CntentResolver对象 增删改查

五,联系人的数据库文件的位置

/data/data/com.android.providers.contacts/databases.contacts2.db

六,数据库中重要的几张表

主要包含三张表,contacts,raw_contacts,data

contacts表:contacts表中一条记录对应联系人列表中的一个联系人
(通过可能包含多个联系人的信息),此表不可直接插入联系人。
它是raw_contacts表记录的整合 raw_contacts表:未经处理的联系人,当插入一个联系人时,
系统会检测当前表中是否有存在相同号码、姓名的联系人,
根据用户设置是否聚合,将可以整合的记录指向同一个contact_id data表:data表中的记录仅仅保存的是某一种类型的数据,
里面有一个地段mimetype_id,
用来关联mimetype表中的类型
,一个raw_contact一般会对应多条data记录

Uri:

// ContentResolver是通过uri来获取数据的,

// 电话号有电话号的uri

// 邮箱有邮箱的uri

// data有data的uri

// 这一系列uri是contentprovider自己定义的,我们只是调用

private static String uri_rawcontacts = “content://com.android.contacts/raw_contacts”;

private static String uri_contacts_phones = “content://com.android.contacts/data/phones”;

private static String uri_contacts_emails = “content://com.android.contacts/data/emails”;

private static String uri_contacts_data = “content://com.android.contacts/data”;

类型:

vnd.android.cursor.item/name

vnd.android.cursor.item/phone_v2

vnd.android.cursor.item/email_v2

附上URi地址图:

16 Content Provider总结的更多相关文章

  1. Android应用程序组件Content Provider在应用程序之间共享数据的原理分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6967204 在Android系统中,不同的应用 ...

  2. Android应用程序组件Content Provider的启动过程源代码分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6963418 通过前面的学习,我们知道在Andr ...

  3. Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (三) —— SharePreferences

    除了SQLite数据库外,SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息.其存储位置在/data ...

  4. Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (四) —— ContentProvider

    ContentProvider是安卓平台中,在不同应用程序之间实现数据共享的一种机制.一个应用程序如果需要让别的程序可以操作自己的数据,即可采用这种机制.并且此种方式忽略了底层的数据存储实现,Cont ...

  5. 我的Android 4 学习系列之数据库和Content Provider

    目录 创建数据库和使用SQLite 使用Content Provider.Cusor和Content Value来存储.共享和使用应用程序数据 使用Cursor Loader异步查询Content P ...

  6. Android开发学习之路--Content Provider之初体验

    天气说变就变,马上又变冷了,还好空气不错,阳光也不错,早起上班的车上的人也不多,公司来的同事和昨天一样一样的,可能明天会多一些吧,那就再来学习android吧.学了两个android的组件,这里学习下 ...

  7. (转)Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (三) —— SharePreferences

    除了SQLite数据库外,SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息.其存储位置在/data ...

  8. Android Content Provider Security(转)

    四大组件之一-content provider安全详解 原帖地址:http://drops.wooyun.org/tips/4314 0x00 科普 内容提供器用来存放和获取数据并使这些数据可以被所有 ...

  9. Android Content Provider Guides

    Android Content Provider Guides Content Providers管理对结构化数据集的访问.它们包装数据,并且提供一种定义数据安全的机制. Content provid ...

随机推荐

  1. hdu 5014(贪+位运算)

    题意:给你n+1个数(0->n),让你为这n+1个数在0->n中分别找一个数与其异或,求最后的最大值 思路:假设一个数5 (二进制1 0 1),则找的另一个数在5的0位上最好是1 , 1位 ...

  2. 51Nod 1331 狭窄的通道

    有一个长为L的狭窄通道,我们假设这个通道在x轴上,其两个出口分别在x=0与x=L处.在这个通道里有N只狼,第i只狼有一个初始位置ai,它想到达位置bi(0<=i=L处空间足够大可以装下任意数量的 ...

  3. 【Remmarguts' Date】

    一道来自POJ2449的题,它融合了单源点最短路算法.启发式搜索,让我们对“启发式”有更深的理解和体会.Wow! ·英文题,述大意:       读入n,m(n<=1000,m<=1000 ...

  4. 图像融合之拉普拉斯融合(laplacian blending)

    一.拉普拉斯融合基本步骤 1. 两幅图像L,R,以及二值掩模mask,给定金字塔层数level. 2. 分别根据L,R构建其对应的拉普拉斯残差金字塔(层数为level),并保留高斯金字塔下采样最顶端的 ...

  5. 如何使用 TeamViewer 配置QuickConnect按钮?

    QuickConnect作为TeamViewer中一个比较重要的部分,得到了很多用户的认可.那么在实际运用中,怎么才能设置网页或单个程序的QuickConnect呢?所以小编以此问题为例,教大家如何配 ...

  6. c++DLL编程详解

    DLL(Dynamic Link Library)的概念,你可以简单的把DLL看成一种仓库,它提供给你一些可以直接拿来用的变量.函数或类.在仓库的发展史上经历了“无库-静态链接库-动态链接库”的时代. ...

  7. 修改apache默认主页,重定向404页面

    yum 下载apache后默认主页 默认配置文件: vim /etc/httpd/conf/httpd.conf /etc/httpd/conf.d/welcome.conf 跳转页面到 /var/w ...

  8. 利用Python进行数据分析——重要的Python库介绍

    利用Python进行数据分析--重要的Python库介绍 一.NumPy 用于数组执行元素级计算及直接对数组执行数学运算 线性代数运算.傅里叶运算.随机数的生成 用于C/C++等代码的集成 二.pan ...

  9. Go 语言递归函数

    递归,就是在运行的过程中调用自己. 语法格式如下: func recursion() { recursion() /* 函数调用自身 */ } func main() { recursion() } ...

  10. Go 语言数组

    Go 语言提供了数组类型的数据结构. 数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整形.字符串或者自定义类型. 相对于去声明number0, number ...