Преобразовать строку в Uri - PullRequest
150 голосов
/ 15 августа 2010

Как я могу преобразовать строку в Uri в Java (Android)? i.e.:

String myUrl = "http://stackoverflow.com";

myUri = ???;

Ответы [ 6 ]

344 голосов
/ 15 августа 2010

Вы можете использовать статический метод parse из Uri

Uri myUri = Uri.parse("http://stackoverflow.com")
23 голосов
/ 22 сентября 2015

Я просто использую пакет java.net .Здесь вы можете сделать следующее:

String myUrl = "http://stackoverflow.com";
URI myURI = new URI(myUrl);
4 голосов
/ 15 февраля 2018

Если вы используете Kotlin и Android-расширения Kotlin, то есть прекрасный способ сделать это.

val uri = myUriString.toUri()

Чтобы добавить расширения Kotlin ( KTX ) к вашему проекту добавьте следующее в build.gradle модуля вашего приложения

  repositories {
    google()
}

dependencies {
    implementation 'androidx.core:core-ktx:1.0.0-rc01'
}
2 голосов
/ 10 января 2017

Вы можете проанализировать строку в Uri, используя Uri.parse () , как показано ниже:

Uri myUri = Uri.parse("http://stackoverflow.com");

Ниже приведен пример того, как вы можете использовать вновь созданный Uri в неявном намерении. Для просмотра в браузере на телефоне пользователя.

// 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);
}

Примечание: Существует различие между Android URI и Uri .

1 голос
/ 15 августа 2010

Что вы собираетесь делать с URI?

Если вы просто собираетесь использовать его, например, с HttpGet, вы можете просто использовать строку непосредственно при создании экземпляра HttpGet.

HttpGet get = new HttpGet("http://stackoverflow.com");
0 голосов
/ 12 ноября 2017

Синтаксический анализатор 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());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...