Ton*_*uze 5 api parameters android uri
我正在寻找另一种从android.net.Uri获取查询参数名称的方法.getQueryParameterNames()需要api级别11.我想对任何低级api做同样的事情.我在看getQuery(),它会返回'?'之后的所有内容.标志.最好的解决方法是解析该字符串并在'='之前搜索所有内容并捕获它吗?我根本不知道每次都会呈现什么查询参数.
小智 12
API <11的唯一问题是该方法未实现.我想最好的办法是寻找到Android的源代码,并使用从API> = 11,实施这应该让你绝对同文功能,即使在旧的API.
这个是从4.1.1开始修改,以Uri作为参数,所以你可以立即使用它:
/**
* Returns a set of the unique names of all query parameters. Iterating
* over the set will return the names in order of their first occurrence.
*
* @throws UnsupportedOperationException if this isn't a hierarchical URI
*
* @return a set of decoded names
*/
private Set<String> getQueryParameterNames(Uri uri) {
if (uri.isOpaque()) {
throw new UnsupportedOperationException("This isn't a hierarchical URI.");
}
String query = uri.getEncodedQuery();
if (query == null) {
return Collections.emptySet();
}
Set<String> names = new LinkedHashSet<String>();
int start = 0;
do {
int next = query.indexOf('&', start);
int end = (next == -1) ? query.length() : next;
int separator = query.indexOf('=', start);
if (separator > end || separator == -1) {
separator = end;
}
String name = query.substring(start, separator);
names.add(Uri.decode(name));
// Move start to end of name.
start = end + 1;
} while (start < query.length());
return Collections.unmodifiableSet(names);
}
Run Code Online (Sandbox Code Playgroud)
如果你想自己深入研究,这里是原始代码:
| 归档时间: |
|
| 查看次数: |
4973 次 |
| 最近记录: |