Преобразование строки в Uri



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



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


myUri = ???;

638   6  

6 ответов:

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

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

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

String myUrl = "http://stackoverflow.com";
URI myURI = new URI(myUrl);

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

val uri = myUriString.toUri()

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

  repositories {
    google()
}

dependencies {
    implementation 'androidx.core:core-ktx:1.0.0-rc01'
}

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

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

HttpGet get = new HttpGet("http://stackoverflow.com");

Вы можете проанализировать строку в 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);
}

NB: есть разница между андроидами URI и Uri.

парсер 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());

Comments

    Ничего не найдено.