UriMatcher能够匹配自定义http链接吗?

pix*_*xel 2 android uri matcher

我想UriMatcher用来匹配自定义的http链接。

我有以下代码:

UriMatcher mUriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
mUriMatcher.addURI("myLink", "http://a.b.c/?id=", 1);
mUriMatcher.addURI("myLink", "http://d.e.f/?id=", 2);
int match = mUriMatcher.match(Uri.parse("http://a.b.c/?id=123"));
Run Code Online (Sandbox Code Playgroud)

但是我总是在比赛结果中得到“ -1” ...

Jas*_*run 5

UriMatcher匹配以下格式的Uris:

scheme://<authority>/<path>
Run Code Online (Sandbox Code Playgroud)

它忽略查询字符串(URL中?之后的所有内容)

您可以使用以下方式向匹配器注册:

mUriMatcher.addURI(authority, path, result);
Run Code Online (Sandbox Code Playgroud)

因此,在上面的简单示例中,您无法区分带有或不带有查询字符串的相同URL,但是可以在域名上进行匹配。使用:

mUriMatcher.addURI('a.b.c', '/', 1);
mUriMatcher.addURI('d.e.f', '/', 2);
Run Code Online (Sandbox Code Playgroud)

您可以在每个匹配处理程序中使用UrlQuerySanitizer来确定是否存在所需的查询内容。