`
ssun125
  • 浏览: 41366 次
文章分类
社区版块
存档分类
最新评论

Content Provider 基础 之URI

 
阅读更多
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


分享到:
评论

相关推荐

    Android新手Content Provider获取通讯录,短信,通话记录

    理解Content Uri的概念和作用,掌握通过Content Provider访问联系人的方法,掌握通过Content Provider访问通话记录的方法,掌握通过Content Provider访问短信的方法。

    Android基础 Content Provider

    1、什么是内容提供者 2、怎样创建内容提供者 3、通过内容提供者完成CRUD操作 4、访问内容提供者 5、监听内容提供者数据变化 6、两个案例:监听短信以及操作联系人 最最重要的是包含了源码

    自定义Content Provider

    自定义Content Provider,实现数据共享。

    androdi ContentProvider和Uri详解

    androdi ContentProvider和Uri详解

    ContentProvider使用

    ContentProvider学习使用

    Android开发 8.0及以上调用相机/相册,并根据Uri获取图像绝对路径,并进行文件上传

    之所以要用到provider,是因为从Android7.0开始,就不允许在 App 间,使用 file:// 的方式,传递一个 File ,否则就会抛出异常,而provider的作用恰好就是用过 content://的模式替换掉 file://,看上去只是换了个...

    ContentProvider

    public Uri insert(Uri uri, ContentValues values) { // TODO Auto-generated method stub sqLiteDatabase=myOpenHelper.getWritableDatabase(); int flag=URI_MATCHER.match(uri); switch (flag) { ...

    Android组件content provider使用解析

    一、基本概念Android四大组件之一 content provider,它主要的作用是:实现各个应用程序之间的(跨应用)数据共享。在这里涉及到进程通信问题,自然在Android中使用的是binder来进行,但是由于content provider提供...

    Android开发指南中文版

    内容提供器的基础知识Content Provider Basics 55 查询一个内容提供器Querying a Content Provider 57 修改数据Modifying Data 61 创建一个内容提供器Creating a Content Provider 64 Content URI 总结 67 清单文件...

    Android开发宝典.rar

    内容提供器的基础知识Content Provider Basics 55 查询一个内容提供器Querying a Content Provider 57 修改数据Modifying Data 61 创建一个内容提供器Creating a Content Provider 64 Content URI 总结 67 清单...

    Android学习笔记之ContentProvider和Uri详解

    本文介绍了自定义Content Provider的相关内容,完全解析内容提供者的用法。Content Provider,内容提供者,相信大家对这个组件的名字都不陌生,可能是自己平时做的都是一些简单的App,所以对于Content Provider的...

    Android开发指南中文版-----应用程序框架

    内容提供器的基础知识Content Provider Basic 55 查询一个内容提供器Querying a Content Provider 57 修改数据Modifying Data 61 创建一个内容提供器Creating a Content Provider 64 Content URI 总结 67 清单文件...

    Android7.0行为变更之适配File Provider的方法

    FileProvider是ContentProvider特殊的子类,ContentProvider通过创建content:// Uri来替代file:/// Uri。 在Android 7.0的以上的系统中,尝试传递file://URI可能会触发FileUriExposedException FileProvider的这个...

    contentprovider

    在Content Provider中使用的查询字符串有别于标准的SQL查询 很多诸如select add delete modify等操作我们都使用一种特殊的URI来进行 这种URI由3个部分组成 “content: ” 代表数据的路径 和一个可选的标识数据的ID ...

    ContentProvider与ContentResolver跨进程共享数据实例

    例子虽然简单,但是覆盖到了Content Provider里面的知识点,例如集成Content Provider,Uri的格式,Content Provider的注册,权限的设置,接口的重写等。由于没有其他多余的代码,功能针对性很强,是学习Android跨...

    Android代码-ContentProviderHelper

    Content Provider Helper ... is a frontend to discover/view/query data of android content providers. Original repository : Copyright (c) 2014-2016 Jens Driller under MIT license Improvements in this ...

    Android 中ContentProvider的实例详解

    Content Provider 的简单介绍: * Android中的Content Provider 机制可支持在多个应用中存储和读取数据。这也是跨应用   共享数据的唯一方式。在Android系统中,没有一个公共的内存区域,供多个应用共享存储...

    适配android7.0获取文件的Uri的方法

    本篇文章主要介绍了适配android7.0获取文件的Uri的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

Global site tag (gtag.js) - Google Analytics