Вы не кодируете весь URL-адрес, а только его части, которые поступают из «ненадежных источников».
String query = URLEncoder.encode("apples oranges", "utf-8");
String url = "http://stackoverflow.com/search?q=" + query;
В качестве альтернативы вы можете использовать Strings.urlEncode (String str) из DroidParts , который не выбрал проверенные исключения.
Или используйте что-то вроде
String uri = Uri.parse("http://...")
.buildUpon()
.appendQueryParameter("key", "val")
.build().toString();