Как преобразовать строку в Uri на Java (Android)? т.е .:Преобразование строки в Uri
String myUrl = "http://stackoverflow.com";
myUri = ???;
Как преобразовать строку в Uri на Java (Android)? т.е .:Преобразование строки в Uri
String myUrl = "http://stackoverflow.com";
myUri = ???;
Вы можете использовать parse
статический метод из Uri
Uri myUri = Uri.parse("http://stackoverflow.com")
Что вы собираетесь делать с URI?
Если вы собираетесь использовать его только с HttpGet, вы можете просто использовать строку непосредственно при создании экземпляра HttpGet.
HttpGet get = new HttpGet("http://stackoverflow.com");
Но, например, 'android.widget.ImageView.setImageURI' не будет - так что это совершенно правильный вопрос. – Martin
на самом деле это не отвечает на вопрос –
Я просто с помощью пакетаjava.net
. Здесь вы можете сделать следующее:
String myUrl = "http://stackoverflow.com";
URI myURI = new URI(myUrl);
Вы можете разобрать строку в Uri, используя Uri.parse(), как показано ниже:
Uri myUri = Uri.parse("http://stackoverflow.com");
Ниже приведен пример того, как вы можете использовать вновь созданный Ури в неявном намерении. Для просмотра в браузере на телефоне пользователя.
// Creates a new Implicit Intent, passing in our Uri as the second paramater.
Intent webIntent = new Intent(Intent.ACTION_VIEW, myUri);
// Checks to see if there is an Activity capable of handling the intent
if (webIntent.resolveActivity(getPackageManager()) != null){
startActivity(webIntent);
}
Парсер Java в java.net.URI
будет терпеть неудачу, если URI не будет полностью закодирован в соответствии со своими стандартами. Например, попробуйте разобрать: http://www.google.com/search?q=cat|dog
. Для вертикальной полосы будет выбрано исключение.
urllib позволяет легко преобразовать строку в java.net.URI
. Он будет предварительно обрабатывать и удалять URL-адрес.
assertEquals("http://www.google.com/search?q=cat%7Cdog",
Urls.createURI("http://www.google.com/search?q=cat|dog").toString());
Если вы используете Котлин и Котлин андроид расширения, то есть прекрасный способ сделать это.
val uri = myUriString.toUri()
Чтобы добавить Котлин расширения (КТХ) к вашему проекту добавить следующее build.gradle своего приложения модуля
repositories {
google()
}
dependencies {
implementation 'androidx.core:core-ktx:0.1'
}
Я попытался это решение, но у меня есть проблемы с ним. Первым Uri нужно изменить на URI (если это из пакета java.net). Во-вторых, у него нет конструктора «разбора». Вы знаете, что я делаю неправильно? –
Существует класс 'Uri' с методом' parse' http://developer.android.com/reference/android/net/Uri.html. Существует также класс 'URI' http://developer.android.com/reference/java/net/URI.html без метода' parse'. Таким образом, правильным классом является 'Uri'. Удостоверьтесь, что у вас есть правильный импорт. – ccheneson
@ccheneson. Почему URI должен быть более правильным, чем URI? С помощью URI вы можете просто использовать метод 'create'.Он так же прост в использовании, как и Ури. Итак, какая у вас польза от Ури? – kaba713