web-dev-qa-db-fra.com

Convertir une chaîne en Uri

Comment puis-je convertir une chaîne en un Uri en Java (Android)? c'est à dire.:

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

myUri = ???;

141
Techboy

Vous pouvez utiliser la méthode statique parse de Uri

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

J'utilise simplement le Java.net package . Ici, vous pouvez effectuer les opérations suivantes:

String myUrl = "http://stackoverflow.com";
URI myURI = new URI(myUrl);
19
Jürgen K.

Si vous utilisez les extensions Kotlin et Kotlin Android, il existe un moyen magnifique de le faire.

val uri = myUriString.toUri()

Pour ajouter des extensions Kotlin (KTX) à votre projet, ajoutez ce qui suit à build.gradle de votre module d'application

  repositories {
    google()
}

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

Vous pouvez analyser une chaîne en Uri en utilisant Uri.parse () comme indiqué ci-dessous:

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

Voici un exemple d'utilisation de votre Uri nouvellement créé dans une intention implicite. Pour être visualisé dans un navigateur sur le téléphone de l'utilisateur.

// 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: Il existe une différence entre Androids URI et Uri.

2
JSON C11

Qu'allez-vous faire avec l'URI?

Si vous voulez simplement l'utiliser avec un HttpGet par exemple, vous pouvez simplement utiliser la chaîne directement lors de la création de l'instance HttpGet.

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

L'analyseur Java dans Java.net.URI va échouer si l'URI n'est pas entièrement codé selon ses normes. Par exemple, essayez d’analyser: http://www.google.com/search?q=cat|dog. Une exception sera levée pour la barre verticale.

urllib facilite la conversion d'une chaîne en Java.net.URI. Il va prétraiter et échapper à l'URL. 

assertEquals("http://www.google.com/search?q=cat%7Cdog",
    Urls.createURI("http://www.google.com/search?q=cat|dog").toString());
0
EricE