Converti stringa in Uri


177

Come posso convertire una stringa in un Uri in Java (Android)? vale a dire:

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

myUri = ???;

Risposte:


402

È possibile utilizzare il parsemetodo statico daUri

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

4
Ho provato questa soluzione ma ho un problema. Il primo Uri deve essere cambiato in URI (se proviene dal pacchetto java.net). Secondo, non ha il costruttore "parse". Hai idea di cosa sto facendo di sbagliato?
Jürgen K.,

2
Esiste una Uriclasse con un parsemetodo developer.android.com/reference/android/net/Uri.html . Esiste anche una URIclasse developer.android.com/reference/java/net/URI.html senza parsemetodo. Quindi la classe giusta da usare è Uri. Assicurati di avere l'importazione corretta
ccheneson,

1
@ccheneson Perché Uri dovrebbe essere più corretto dell'URI? Con URI puoi semplicemente usare il createmetodo. È semplice da usare come Uri. Quindi quale beneficio hai di Uri?
kaba713,

È giusto. Importazioni sbagliate sono anche uno dei miei fastidiosi problemi.
Omid.N

34

Sto solo usando il java.net pacchetto . Qui puoi fare quanto segue:

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

L'URI è diverso dall'URI.
Ali Alaoi

7

Se stai usando le estensioni Android di Kotlin e Kotlin, allora c'è un modo bellissimo di farlo.

val uri = myUriString.toUri()

Per aggiungere estensioni Kotlin ( KTX ) al progetto aggiungere quanto segue al build.gradle del modulo app

  repositories {
    google()
}

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

3

Puoi analizzare una stringa in un Uri usando Uri.parse () come mostrato di seguito:

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

Di seguito è riportato un esempio di come è possibile utilizzare l'Uri appena creato con un intento implicito. Da visualizzare in un browser sul telefono degli utenti.

// 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: esiste una differenza tra Androids URI e Uri .


-1

Che cosa hai intenzione di fare con l'URI?

Se ad esempio lo utilizzerai solo con un HttpGet, puoi semplicemente utilizzare la stringa direttamente durante la creazione dell'istanza di HttpGet.

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

2
Ma per esempio android.widget.ImageView.setImageURIno - quindi è una domanda perfettamente valida.
Martin,

1
in realtà questo non risponde alla domanda
Jürgen K.,

-1

Il parser di Java in java.net.URI non funzionerà se l'URI non è completamente codificato secondo i suoi standard. Ad esempio, provare per analizzare: http://www.google.com/search?q=cat|dog. Verrà generata un'eccezione per la barra verticale.

urllib semplifica la conversione di una stringa in a java.net.URI. Pre-elaborerà e sfuggirà all'URL.

assertEquals("http://www.google.com/search?q=cat%7Cdog",
    Urls.createURI("http://www.google.com/search?q=cat|dog").toString());
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.