Ответы:
Вы можете использовать parse
статический метод изUri
Uri myUri = Uri.parse("http://stackoverflow.com")
Uri
класс с parse
методом developer.android.com/reference/android/net/Uri.html . Существует также URI
класс developer.android.com/reference/java/net/URI.html без parse
метода. Таким образом, правильный класс для использования Uri
. Убедитесь, что у вас есть правильный импорт
create
метод. Это так же просто, как использовать Uri. Так какая вы польза от Ури?
Если вы используете расширения Kotlin и Kotlin для Android, то есть прекрасный способ сделать это.
val uri = myUriString.toUri()
Чтобы добавить расширения Kotlin ( KTX ) в свой проект, добавьте следующее в build.gradle модуля приложения.
repositories {
google()
}
dependencies {
implementation 'androidx.core:core-ktx:1.0.0-rc01'
}
Вы можете проанализировать строку в 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);
}
NB. Существует различие между URI Android и Uri .
Что вы собираетесь делать с URI?
Если вы просто собираетесь использовать его с HttpGet, например, вы можете просто использовать строку непосредственно при создании экземпляра HttpGet.
HttpGet get = new HttpGet("http://stackoverflow.com");
android.widget.ImageView.setImageURI
, не будет - так что это совершенно правильный вопрос.
Синтаксический анализатор 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());