您的位置:首页 > 移动开发 > Android开发

android的uri以及UriMatcher讲解

2015-11-09 20:39 405 查看
1. Uri

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

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

URI一般由三部分组成:

访问资源的命名机制。

存放资源的主机名。

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

Android的Uri由以下三部分组成:"content://"、数据路径、标示ID

举例子,如:

所有国家的Uri: content://contacts/country/4

某个国家的Uri:content://contacts/country

某个视频Uri:content://media/video/2

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

下面讲解一下UriMatcher.

2.UriMatcher

UriMatcher类主要用于匹配Uri.

使用方法:

第一步,初始化:

UriMatcher matcher = new UriMatcher(UriMatcher.NO_MATCH);

第二步注册需要的Uri:
matcher.addURI("country", "america", 0);
matcher.addURI("country", "china", 1);

第三步与已经注册的Uri进行匹配:
Uri uri = Uri.parse("content://" + "country" + "/america");

int match = matcher.match(uri);
switch(match) {
case 0:
return "logout arimerca";
case 1:
return "logout china";
default:
return null;
}

}

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

--常量 UriMatcher.NO_MATCH 表示不匹配任何路径的返回码

--#表示通配符

--* 表示任意字符

官方的sdk应该进行修改为private static final UriMatcher sURIMatcher = new UriMatcher();
static
{
sURIMatcher.addURI("contacts", "people", PEOPLE);
sURIMatcher.addURI("contacts", "people/#", PEOPLE_ID);
sURIMatcher.addURI("call_log", "calls/filter/*", CALLS_FILTER);
sURIMatcher.addURI("call_log", "calls/#", CALLS_ID);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: