`
阅读更多

先看效果图:


 

 

1.Uri

通用资源标志符(Universal Resource Identifier, 简称"URI")。

Uri代表要操作的数据,Android上可用的每种资源 - 图像、视频片段等都可以用Uri来表示。

URI一般由三部分组成:

访问资源的命名机制。 

存放资源的主机名。 

资源自身的名称,由路径表示。 

AndroidUri由以下三部分组成: "content://"、数据的路径、标示ID(可选)

举些例子,如: 

所有联系人的Uri content://contacts/people

某个联系人的Uri: content://contacts/people/5

所有图片Uri: content://media/external

某个图片的Uricontent://media/external/images/media/4

我们很经常需要解析Uri,并从Uri中获取数据。

Android系统提供了两个用于操作Uri的工具类,分别为UriMatcher ContentUris 

虽然这两类不是非常重要,但是掌握它们的使用,会便于我们的开发工作。

2.UriMatcher

UriMatcher 类主要用于匹配Uri.

使用方法如下。

//首先第一步,初始化:

UriMatcher matcher = new UriMatcher(UriMatcher.NO_MATCH);  

UriMatcher matcher = new UriMatcher(UriMatcher.NO_MATCH);  

//第二步注册需要的Uri:

matcher.addURI("com.yfz.Lesson", "people", PEOPLE);  

matcher.addURI("com.yfz.Lesson", "person/#", PEOPLE_ID);  

matcher.addURI("com.yfz.Lesson", "people", PEOPLE);  

matcher.addURI("com.yfz.Lesson", "person/#", PEOPLE_ID);  

//第三步,与已经注册的Uri进行匹配:

Uri uri = Uri.parse("content://" + "com.yfz.Lesson" + "/people");  

int match = matcher.match(uri);  

       switch (match)  

       {  

           case PEOPLE:  

               return "vnd.Android.cursor.dir/people";  

           case PEOPLE_ID:  

               return "vnd.android.cursor.item/people";  

           default:  

               return null;  

       }  

Uri uri = Uri.parse("content://" + "com.yfz.Lesson" + "/people");  

int match = matcher.match(uri);  

       switch (match)  

       {  

           case PEOPLE:  

               return "vnd.Android.cursor.dir/people";  

           case PEOPLE_ID:  

               return "vnd.Android.cursor.item/people";  

           default:  

               return null;  

       }  

 

 

 

 

match方法匹配后会返回一个匹配码Code,即在使用注册方法addURI时传入的第三个参数。 

上述方法会返回"vnd.Android.cursor.dir/person". 

3.ContentUris

ContentUris 类用于获取Uri路径后面的ID部分

3.1为路径加上ID

比如有这样一个Uri

Uri uri = Uri.parse("content://com.yfz.Lesson/people")  

Uri uri = Uri.parse("content://com.yfz.Lesson/people")  

通过withAppendedId方法,为该Uri加上ID

Uri resultUri = ContentUris.withAppendedId(uri, 10);  

Uri resultUri = ContentUris.withAppendedId(uri, 10);  

最后resultUri为: content://com.yfz.Lesson/people/10

 

3.2从路径中获取ID

Uri uri = Uri.parse("content://com.yfz.Lesson/people/10")  

long personid = ContentUris.parseId(uri);  

Uri uri = Uri.parse("content://com.yfz.Lesson/people/10")  

long personid = ContentUris.parseId(uri);  

 最后personid :10 


 Demo下载
最后,以上例子都来源与安卓无忧,请去应用宝或者豌豆荚下载:http://android.myapp.com/myapp/detail.htm?apkName=com.shandong.mm.androidstudy,源码例子文档一网打尽。

  • 大小: 3.9 MB
0
0
分享到:
评论

相关推荐

    博客《Uri详解之——Uri结构与代码提取》对应源码

    博客《Uri详解之——Uri结构与代码提取》对应源码,博客地址:http://blog.csdn.net/harvic880925/article/details/44679239

    androdi ContentProvider和Uri详解

    androdi ContentProvider和Uri详解

    博客《Uri详解之二——通过自定义Uri外部启动APP与Notification启动》对应源码

    博客《Uri详解之二——通过自定义Uri外部启动APP与Notification启动》对应源码,博客地址:http://blog.csdn.net/harvic880925/article/details/44781557

    详解android 通过uri获取bitmap图片并压缩

    主要介绍了详解android 通过uri获取bitmap图片并压缩的相关资料,希望通过本文能帮助到大家,让大家理解这部分内容,需要的朋友可以参考下

    Android学习笔记之ContentProvider和Uri详解

    本篇文章主要介绍了Android学习笔记之ContentProvider和Uri详解,对于学习Android的朋友具有一定的参考价值,有需要可以可以了解一下。

    AndroidHttpClient详解及调用示例

    下面给大家展示了AndroidHttpClient结构: public final class AndroidHttpClient extends Object implements HttpClient 前言: 这类其实是Google对阿帕奇的HttpClient的一个封装,一些默认属性有android做了一些...

    基于Android ContentProvider的总结详解

    1.适用场景1) ContentProvider为存储和读取数据提供了统一的接口2) 使用ContentProvider,应用程序可以实现数据共享3) android内置的许多数据都是使用ContentProvider形式,供开发者调用的(如视频,音频,图片,...

    Android pdf viewer在android studio应用问题说明详解

    android 显示网络pdf,基本原理:先将pdf文件通过DownloadManager下载到手机sdk某个文件夹中,然后通过android-pdf-viewer插件进行显示。 android-pdf-viewer插件可以直接到github上下载,地址:https://

    详解Android App中使用VideoView来实现视频播放的方法

    (2)setVideoURI(Uri uri):加载uri所对应的视频 3、调用VideoView的start()、stop()、psuse()方法来控制视频的播放 VideoView通过与MediaController类结合使用,开发者可以不用自己控制播放与暂停 package ...

    深入Understanding Android ContentProvider详解

    接口更加方便,更加方便的让组件之间传送数据ContentProvider的访问标识为Uri,通过统一的ContentResolver进行访问,而ContentResolver和Uri跟Application的上下文Context以及组件之间的信息传送工具Intent都是

    Android 中ContentProvider的实例详解

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

    Android拨打电话功能实例详解

    本文实例分析了Android拨打电话功能。分享给大家供大家参考,具体如下: 打电话是手机的一个最基本的功能,现在android智能手机非常流行,里面有多种多样的精彩的手机...import android.net.Uri; import android.os.Bu

    深入 Google Android 6.0/7.0/8.0/9.0 之权限适配详解

    Android6.0 The 6 然后在代码里的: Uri uri = Uri.fromFile(new File(picPath)); 更改为: Uri uri; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){ uri = FileProvider.getUriForFile(...

    Android第三方文件选择器aFileChooser使用方法详解

    aFileChooser实现了在Android平台上高度可定制化的文件选择功能,aFileChooser在自己的项目代码中使用也比较简单。  写一个简单例子加以说明。  (1) 首先要配置Androidmanifest.xml文件:  <activity ...

    疯狂Android讲义源码

     5.1 Intent对象详解 197  5.1.1 使用Intent启动系统组件 197  5.2 Intent的属性及intent-filter  配置 198  5.2.1 Component属性 198  5.2.2 Action、Category属性与  intent-filter配置 200  5.2.3 指定...

    Android中ContentProvider和ContentResolver详解

    Android中ContentProvider和ContentResolver详解 在Android中,我们的应用有的时候需要对外提供数据接口,可以有如下几种方法: 1)AIDL 2)Broadcast 3)ContentProvider。 使用AIDL需要我们编写AIDL接口以及实现...

    Android剪贴板用法详解

    本文实例详述了Android剪贴板的用法,分享给大家供大家参考。具体方法分析如下: 这里首先需要注意的一点,就是在使用Android剪贴板的时候大家只记住一点就行了,不管是安卓设备还是PC机,复制粘贴在同一时间里只能...

Global site tag (gtag.js) - Google Analytics