mam zamiar dodać jeszcze jedną sugestię tutaj. Możesz to zrobić, unikając konieczności pobierania jakichkolwiek zewnętrznych bibliotek.
spróbuj tego:
String urlStr = "http://abc.dev.domain.com/0007AC/ads/800x480 15sec h.264.mp4";
URL url = new URL(urlStr);
URI uri = new URI(url.getProtocol(), url.getUserInfo(), url.getHost(), url.getPort(), url.getPath(), url.getQuery(), url.getRef());
url = uri.toURL();
Widać, że w tym konkretnym adresem URL, muszę mieć te przestrzenie zakodowane tak, że można go używać do wniosku.
Umożliwia to korzystanie z kilku funkcji dostępnych w klasach Android. Po pierwsze, klasa URL może podzielić adres URL na odpowiednie składniki, więc nie trzeba wykonywać żadnych wyszukiwań/zamiany ciągów. Po drugie, to podejście wykorzystuje zaletę klasy URI dla poprawnie wymykających się komponentów podczas konstruowania URI przez komponenty, a nie z pojedynczego łańcucha.
Piękno tego podejścia polega na tym, że możesz wziąć dowolny prawidłowy ciąg adresów URL i sprawić, by działał bez potrzeby posiadania specjalnej wiedzy o nim.
Co zrobić, jeśli cały adres URL jest niewiarygodny? Czy powinienem kodować wszystko oprócz protokołu? W pewnym sensie spodziewałem się takiej metody. – hpique
To jest po prostu uszkodzony adres URL. Pomysł polega na tym, aby część z zapytaniem nie mogła zlikwidować adresu URL. – yanchenko
@ hgpc - zobacz sekcję 3 dokumentu RFC3986 (http://tools.ietf.org/html/rfc3986#section-3). Mówi ci, jak zakodować różne części URI. Niestety każda część URI (host, ścieżka, zapytanie itp.) Ma nieco inne zasady kodowania. –