207 votes

Convertir une chaîne en Uri

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

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

monUri = ??? ;

485voto

ccheneson Points 24031

Vous pouvez utiliser le parse méthode statique de Uri

//...
import android.net.Uri;
//...

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

4 votes

J'ai essayé cette solution mais j'ai un problème avec elle. Premièrement, l'Uri doit être changé en URI (s'il provient du paquet java.net). Deuxièmement, il n'y a pas de constructeur "parse". Avez-vous une idée de ce que je fais de mal ?

2 votes

Il existe un Uri avec une classe parse méthode developer.Android.com/reference/Android/net/Uri.html . Il existe également un URI classe developer.Android.com/reference/java/net/URI.html sans un parse méthode. La bonne classe à utiliser est donc Uri . Assurez-vous que vous avez la bonne importation

1 votes

@ccheneson Pourquoi Uri serait-il plus correct que URI ? Avec URI, vous pouvez simplement utiliser le create méthode. C'est aussi simple à utiliser que Uri. Alors quel avantage tirez-vous d'Uri ?

45voto

Jürgen K. Points 1154

J'utilise simplement le java.net paquet . Vous pouvez y effectuer les opérations suivantes :

...
import java.net.URI;
...

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

9voto

wonderkid Points 578

Si vous utilisez Kotlin et les extensions Android de Kotlin, il existe une belle façon de le faire.

val uri = myUriString.toUri()

Pour ajouter des extensions Kotlin ( KTX ) à votre projet, ajoutez les éléments suivants au build.gradle de votre module d'application

  repositories {
    google()
}

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

7voto

JSON C11 Points 3146

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

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

Voici un exemple de la manière dont vous pouvez utiliser 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 y a une différence entre les Androïdes URI et Uri .

1voto

EricE Points 64

L'analyseur syntaxique de 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 permet de convertir facilement une chaîne de caractères en un java.net.URI . Il prétraitera et échappera l'URL.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X