第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. [HNOI2009]图的同构

    Description 求两两互不同构的含n个点的简单图有多少种. 简单图是关联一对顶点的无向边不多于一条的不含自环的图. a图与b图被认为是同构的是指a图的顶点经过一定的重新标号以后,a图的顶点集和 ...

  2. bzoj 3745: [Coci2015]Norma

    Description Solution 考虑分治: 我们要统计跨越 \(mid\) 的区间的贡献 分最大值和最小值所在位置进行讨论: 设左边枚举到了 \(i\),左边 \([i,mid]\) 的最大 ...

  3. 【 lca倍增模板】

    题目描述 对于 n(<100000)个点 n-1 条掉权值的边,有 m 个询问,每条询问求两个结点之间的路径上边权的最小值 输入 第一行 n,表示结点个数,接下来 n-1 行,每行 a b w ...

  4. VK Cup 2017 - Квалификация 2

    因为资格赛1已经通过了,资格赛2随便打打玩.这次题目比上次还简单,FallDream看了两眼觉得太水就不做了,我一个人闲着无聊只好默默做了 A. Новый пароль 题目大意:给出N和K,要求构 ...

  5. [bzoj4822][Cqoi2017]老C的任务&[bzoj1935][Shoi2007]Tree 园丁的烦恼

    来自FallDream的博客,未经允许,请勿转载,谢谢. 老 C 是个程序员.     最近老 C 从老板那里接到了一个任务——给城市中的手机基站写个管理系统.作为经验丰富的程序员,老 C 轻松地完成 ...

  6. [poj2451]Uyuw's Concert

    半平面交滴裸题,但是要求nlogn,练练手 #include<iostream> #include<cstdio> #include<cmath> #include ...

  7. [bzoj2648/2716]SJY摆棋子

    平面上有n个点,要求支持插入一个点和查询一个点的最近点距离 n,m<=500000 用kdtree实现,但是复杂度貌似没法保证.....(莫名加了替罪羊重建更慢了...) #include< ...

  8. Cisco 的基本配置实例之五----交换机的路由功能与DHCP 功能

    5.配置交换机的路由功能 说明:只有在三层交换机上才有路由功能,其他的二层接入交换机要想在不同的vlan之间传送数据需要通过trunk口到核心交换机上进行完路由交换后才可以. TEST(config) ...

  9. Redis实现单点登录

    http://blog.csdn.net/WuCourage/article/details/77802812

  10. Gradle--初识

    1.Eclipse从svn导入Gradle项目 1.检出项目的时候不要选新项目,选"做为工作空间中的项目检出",然后点Finish. 2.将项目转为Gradle项目,右键导入的项目 ...