先看效果图:
1.Uri
通用资源标志符(Universal Resource Identifier, 简称"URI")。
Uri代表要操作的数据,Android上可用的每种资源 - 图像、视频片段等都可以用Uri来表示。
URI一般由三部分组成:
访问资源的命名机制。
存放资源的主机名。
资源自身的名称,由路径表示。
Android的Uri由以下三部分组成: "content://"、数据的路径、标示ID(可选)
举些例子,如:
所有联系人的Uri: content://contacts/people
某个联系人的Uri: content://contacts/people/5
所有图片Uri: content://media/external
某个图片的Uri:content://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,源码例子文档一网打尽。
相关推荐
博客《Uri详解之——Uri结构与代码提取》对应源码,博客地址:http://blog.csdn.net/harvic880925/article/details/44679239
androdi ContentProvider和Uri详解
博客《Uri详解之二——通过自定义Uri外部启动APP与Notification启动》对应源码,博客地址:http://blog.csdn.net/harvic880925/article/details/44781557
主要介绍了详解android 通过uri获取bitmap图片并压缩的相关资料,希望通过本文能帮助到大家,让大家理解这部分内容,需要的朋友可以参考下
本篇文章主要介绍了Android学习笔记之ContentProvider和Uri详解,对于学习Android的朋友具有一定的参考价值,有需要可以可以了解一下。
下面给大家展示了AndroidHttpClient结构: public final class AndroidHttpClient extends Object implements HttpClient 前言: 这类其实是Google对阿帕奇的HttpClient的一个封装,一些默认属性有android做了一些...
1.适用场景1) ContentProvider为存储和读取数据提供了统一的接口2) 使用ContentProvider,应用程序可以实现数据共享3) android内置的许多数据都是使用ContentProvider形式,供开发者调用的(如视频,音频,图片,...
android 显示网络pdf,基本原理:先将pdf文件通过DownloadManager下载到手机sdk某个文件夹中,然后通过android-pdf-viewer插件进行显示。 android-pdf-viewer插件可以直接到github上下载,地址:https://
(2)setVideoURI(Uri uri):加载uri所对应的视频 3、调用VideoView的start()、stop()、psuse()方法来控制视频的播放 VideoView通过与MediaController类结合使用,开发者可以不用自己控制播放与暂停 package ...
接口更加方便,更加方便的让组件之间传送数据ContentProvider的访问标识为Uri,通过统一的ContentResolver进行访问,而ContentResolver和Uri跟Application的上下文Context以及组件之间的信息传送工具Intent都是
Android 中ContentProvider的实例详解 Content Provider 的简单介绍: * Android中的Content Provider 机制可支持在多个应用中存储和读取数据。这也是跨应用 共享数据的唯一方式。在Android系统中,没有一个...
本文实例分析了Android拨打电话功能。分享给大家供大家参考,具体如下: 打电话是手机的一个最基本的功能,现在android智能手机非常流行,里面有多种多样的精彩的手机...import android.net.Uri; import android.os.Bu
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(...
aFileChooser实现了在Android平台上高度可定制化的文件选择功能,aFileChooser在自己的项目代码中使用也比较简单。 写一个简单例子加以说明。 (1) 首先要配置Androidmanifest.xml文件: <activity ...
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中,我们的应用有的时候需要对外提供数据接口,可以有如下几种方法: 1)AIDL 2)Broadcast 3)ContentProvider。 使用AIDL需要我们编写AIDL接口以及实现...
本文实例详述了Android剪贴板的用法,分享给大家供大家参考。具体方法分析如下: 这里首先需要注意的一点,就是在使用Android剪贴板的时候大家只记住一点就行了,不管是安卓设备还是PC机,复制粘贴在同一时间里只能...