Android Uri详解:操作与匹配

需积分: 10 5 下载量 102 浏览量 更新于2024-09-11 1 收藏 29KB DOCX 举报
“Android Uri的理解资料,包括Uri的基本概念、组成结构以及UriMatcher和ContentUris的使用。” 在Android开发中,Uri(Universal Resource Identifier)是一个关键的概念,它用于标识应用程序中可访问的各种资源,比如联系人、图片、视频等。Uri不仅仅是URL(Uniform Resource Locator),而是更广泛的标识符,它包含了定位和描述资源的所有必要信息。 Uri通常由三部分构成: 1. 命名机制:这是指访问资源的方式,例如"content://"、"file://"或"android.resource://",表明资源是内容提供者、本地文件系统还是应用资源。 2. 主机名:在Android中,这个部分通常是数据提供者的包名,用来标识数据来源。 3. 资源路径:这部分指定资源的具体位置,可以是路径形式,如"/people",或者是包含ID的形式,如"/person/5"。 Android Uri的一个常见例子是: - 所有联系人的Uri:`content://contacts/people` - 某个联系人的Uri:`content://contacts/people/5` - 所有图片Uri:`content://media/external` - 某个图片的Uri:`content://media/external/images/media/4` 开发者在实际操作Uri时,通常需要解析Uri以获取数据。Android为此提供了两个辅助类: 1. UriMatcher:这是一个工具类,用于高效地匹配Uri。通过预先注册Uri模式,然后使用`match()`方法与目标Uri进行比较,返回匹配的代码。例如: - 初始化:`UriMatcher matcher = new UriMatcher(UriMatcher.NO_MATCH);` - 注册Uri:`matcher.addURI("com.yfz.Lesson", "people", PEOPLE); matcher.addURI("com.yfz.Lesson", "person/#", PERSON_ID);` - 匹配Uri:`Uri uri = Uri.parse("content://" + "com.yfz.Lesson" + "/people"); int match = matcher.match(uri);` - 之后根据`match`值进行相应的操作。 2. ContentUris:这个类主要用于处理包含ID的Uri,它提供了一些方法如`withAppendedId()`,可以方便地在已有的Uri基础上附加ID,例如: - `Uri itemUri = ContentUris.withAppendedId(uri, id);` 掌握UriMatcher和ContentUris的使用对于开发涉及数据查询和操作的应用程序至关重要。通过UriMatcher,可以高效地识别并处理不同类型的Uri请求,而ContentUris则简化了对具有特定ID资源的操作。了解这些基础知识,能够提升Android应用的开发效率和代码质量。
2016-10-17 上传