Ответ 1
Используйте URL.toURI()
(Android doc) метод.
Пример:
URL url = new URL("http://www.google.com"); //Some instantiated URL object
URI uri = url.toURI();
Обязательно обработайте соответствующее исключение, например URISyntaxException
.
Я хотел бы use intent.setData(URI)
передать данные, полученные из URL. Для этого мне нужно создать URI из URL (или из байт [], который я читал из URL-адреса, или ByteArrayInputStream
, который я создаю из byte[]
и т.д.). Однако я не могу понять, как это должно быть сделано.
Итак, есть ли в любом случае создание URI из данных, полученных из URL, без предварительной записи данных в локальный файл?
Используйте URL.toURI()
(Android doc) метод.
Пример:
URL url = new URL("http://www.google.com"); //Some instantiated URL object
URI uri = url.toURI();
Обязательно обработайте соответствующее исключение, например URISyntaxException
.
Я думаю, что ваш ответ можно найти здесь..
Uri.Builder.build()
работает довольно хорошо с обычными URL-адресами, но с ошибкой поддерживает номер порта.
Самый простой способ, который я обнаружил, чтобы он поддерживал номера портов, состоял в том, чтобы сначала проанализировать данный URL, а затем работать с ним.
Uri.Builder b = Uri.parse("http://www.yoursite.com:12345").buildUpon();
b.path("/path/to/something/");
b.appendQueryParameter("arg1", String.valueOf(42));
if (username != "") {
b.appendQueryParameter("username", username);
}
String url = b.build().toString();
Источник: http://twigstechtips.blogspot.com/2011/01/android-create-url-using.html
Обратите внимание, что в Android Uri отличаются от URI Java. Здесь, как избежать использования жестко закодированных строк и в то же время создать Uri с только частью пути строки URL-адреса http, закодированной в соответствии с RFC2396:
Пример строки URL:
String thisUrl = "http://lapi.transitchicago.com/api/1.0/ttarrivals.aspx?key=[redacted]&mapid=value"
метод:
private Uri.Builder builder;
public Uri getUriFromUrl(String thisUrl) {
URL url = new URL(thisUrl);
builder = new Uri.Builder()
.scheme(url.getProtocol())
.authority(url.getAuthority())
.appendPath(url.getPath());
return builder.build();
}
Чтобы обрабатывать строки запроса, вам необходимо проанализировать url.getQuery(), как описано здесь, а затем передать это в конструктор. appendQueryParameter().
try {
uri = new URI(url.toString());
} catch (URISyntaxException e) {
}
Uri uri = Uri.parse( "http://www.facebook.com" );
URI uri = null;
URL url = null;
// Create a URI
try {
uri = new URI("www.abc.com");
} catch (URISyntaxException e) {
}
// Convert an absolute URI to a URL
try {
url = uri.toURL();
} catch (IllegalArgumentException e) {
// URI was not absolute
} catch (MalformedURLException e) {
}
// Convert a URL to a URI
try {
uri = new URI(url.toString());
} catch (URISyntaxException e) {
}
Мы можем проанализировать любой URL из Uri с помощью
Uri uri = Uri.parse( "http://www.google.com" );