自从Android M以来,事情变得更加复杂。android.net.URI.getQueryParameter()
的答案有一个错误,它在JellyBean之前会破坏空格。Apache URLEncodedUtils.parse()
可以正常工作,但在 L 中被弃用,在 M 中被删除。
所以现在最好的答案是UrlQuerySanitizer
。这自 API 级别 1 以来一直存在,并且仍然存在。它还使您思考棘手的问题,例如如何处理特殊字符或重复值。
最简单的代码是
UrlQuerySanitizer.ValueSanitizer sanitizer = UrlQuerySanitizer.getAllButNullLegal();
// remember to decide if you want the first or last parameter with the same name
// If you want the first call setPreferFirstRepeatedParameter(true);
sanitizer.parseUrl(url);
String value = sanitizer.getValue("paramName");
如果您对默认解析行为感到满意,可以执行以下操作:
new UrlQuerySanitizer(url).getValue("paramName")
但你应该确保你了解默认的解析行为是什么,因为它可能不是你想要的。