Keywords: content provider, URI
Content Provider这个东西在Android平台上是最常用的共享数据的方法(似乎应用程序之间共享数据也只有这种方法吧,待求证)。虽然常用,但是这个东 西要理解透彻还是要先掌握一些基础的。URI就是Content Provider(简称CP)的基础。我们要标识一个CP,就必须用URI这个东东。这就类似于我们要通过网址来标识某个特定网站,实际上网址URL本身 就是一种URI。URI全称Uniform Resource Identifier, 它包括了URL和URN。而关于它们的详细解释,有心的朋友可以参考RFC3896:http://tools.ietf.org/html /rfc3986。URI不仅可以标识特定CP,还可以标识CP中特定的数据库表,就好像URL不仅可以标识特定网站,也可以标识这个网站某个特定网页一 样。实际上在Android平台上URI的用途更广泛一些,它还用于Intent中data的标识。
就Android平台而言,URI主要分三个部分:scheme, authority and path。其中authority又分为host和port。格式如下:
scheme://host:port/path
举个实际的例子:
content://com.example.project:200/folder/subfolder/etc
\---------/  \---------------------------/ \---/ \--------------------------/
scheme                 host               port        path
                \--------------------------------/
                          authority

现在大家应该知道data flag中那些属性的含义了吧,看下data flag
<data android:host="string"
      android:mimeType="string"
      android:path="string"
      android:pathPattern="string"
      android:pathPrefix="string"
      android:port="string"
      android:scheme="string" />
但是我们在程序中一般是不直接用URI来标识CP的,是的,正如我们通常见到的用定义的常量来标识。例如standard CP中的Contacts,我们就用Contacts.People.CONTENT_URI来标识Contacts CP中People这个表。那么要标识某个具体的人怎么办呢? 这就用到了ContentUris.withAppendedId() 和 Uri.withAppendedPath()。例如我们要表示content://contacts/people/20,那么我们就可以用如下语句:
Uri uri = ContentUris.withAppendedId(People.CONTENT_URI, 20); 或者
Uri uri = Uri.withAppendedPath(People.CONTENT_URI, "20");

好了现在我们应该理解URI是怎么回事了,后续我再写CP其它方面的基础。

转自http://notfatboy.iteye.com/blog/582834

转载于:https://www.cnblogs.com/android-html5/archive/2012/06/03/2533883.html

Content Provider 基础 之URI相关推荐

  1. Android Content Provider基础

    Android Content Provider基础 Content Providers Content providers管理对一个结构化的数据集合的访问.它们封装了数据,并且提供了保护数据安全性的 ...

  2. (转载)Android content provider基础与使用

    android有一个独特之处就是,数据库只能被它的创建者所使用,其他的应用是不能访问到的,所以如果你想实现不同应用之间的数据共享,就不得不用content provider了. 在Android中,c ...

  3. Content Provider之一大菊观

    题记:这篇是对content provider的一个全局的认识篇,包括一些基本概念和用法,故而借用下大酒神的大菊观附体~ 主要包括以下几个方面: provider执行原理以及相关的概念: 通过prov ...

  4. Android开发学习笔记:浅谈Content Provider

    一.Content Provider的概念介绍 Content Providers是所有应用程序之间数据存储和检索的桥梁,它使得各个应用程序之间实现数据共享.是应用程序间共享数据的唯一途径.Conte ...

  5. Android四大组件Content Provider使用实例

    本文包含两个应用程序,其中,第一个应用程序命名为ArticlesProvider,它使用了SQLite数据库来维护一个文章信息列表,同时,它定义了访问这个文章信息列表的URI,这样,我们就可以通过一个 ...

  6. 安卓基础巩固(二):四大组件:Activity、Service、Broadcast、Content Provider

    文章目录 Activity 生命周期 onCreate和onStart的区别 onPause和onStop的区别 生命周期的变化 Activity的启动 Intent Bundle Activity携 ...

  7. 基础篇:7.Content provider与Content Resolver实现数据共享

    前言: 文件数据.数据库数据以及一些其它类型的数据在android中都是私有的,在android中,并没有提供所有应用共同访问的公共储存区域.但各应用程序间通常需要进行数据共享,如联系人信息等. 在a ...

  8. Android基础知识(二十一):Android五大存储之文件存储、Content Provider存储和网络存储

    Android基础知识(二十一):Android五大存储之文件存储.Content Provider存储和网络存储 一.Android存储--持久化技术 数据持久化是指将那些内存中的瞬时数据保存到存储 ...

  9. android contentprovider api,Content Provider Basics

    一个内容提供者访问数据的中央资源库.提供者是应用程序的一部分,提供自己的操作数据的UI.然而,内容提供者主要是被其他应用程序引用,通过提供者客户对象访问提供者.提供者和提供者客户端为数据提供一个一致的 ...

最新文章

  1. 31 道 Java 核心面试题,统统打包给你!
  2. 石川es6课程---12、Promise
  3. win10专业版关闭smartscreen
  4. element ui 前台模板_SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 前端篇(二):引入 element-ui 定义基本页面显示...
  5. 微信分享朋友圈固定缩略图 php,微信转发或分享朋友圈带缩略图、标题和描述的实现方法...
  6. WPS重复数据高亮显示
  7. bzoj3545: [ONTAK2010]Peaks 主席树合并
  8. python 03day上--网络基础及dos命令
  9. ACM的奇计淫巧_输入挂
  10. 文字烫金效果html,一种浮雕烫金效果的收缩套标的制作方法
  11. (一)前端html+css学习笔记
  12. 计算机硬件的组装实践,论文-计算机硬件组装实践.doc
  13. python输入一个包含若干自然数的列表_Python练习题
  14. 51nod3148 松鼠聚会
  15. 利用nid更改数据库的名称(OCM---OCP)
  16. 数学建模学习——分类模型
  17. pushd和popd批处理_提示以及PushD和PopD
  18. Ansys Zemax / SPEOS | 3片式LCD投影仪的设计与仿真
  19. 适用于火车头7.6的翻译插件-亲测10000篇文章稳定不报错
  20. python语言合法命名是_Python命名规范

热门文章

  1. LOJ.2718.[NOI2018]归程(Kruskal重构树 倍增)
  2. python3.6安装【scrapy】-最保守方法
  3. 读书笔记8-浪潮之巅(part3)
  4. 2018--20179215--《文献管理与信息分析》第三讲 英文数据库资源的发展趋势和利用...
  5. spring使用JdbcTemplate和jdbcDaosupport及具名参数使用
  6. 内部类访问局部变量的时候,为什么变量必须加上final修饰
  7. error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”...
  8. 某final神犇的工作感想
  9. 我理解的invoke和begininvoke
  10. PPA格式Linux安装,Ubuntu12.04 用PPA安装fcitx和搜狗输入法附加组件Linux版