String in Uri konvertieren


176

Wie kann ich einen String in Java (Android) in einen Uri konvertieren? dh:

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

myUri = ???;

Antworten:


400

Sie können die parsestatische Methode von verwendenUri

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

4
Ich habe diese Lösung ausprobiert, aber ich habe ein Problem damit. Zuerst muss Uri in URI geändert werden (wenn es aus dem java.net-Paket stammt). Zweitens hat es nicht den "parse" -Konstruktor. Hast du eine Idee, was ich falsch mache?
Jürgen K.

2
Es gibt eine UriKlasse mit der parseMethode developer.android.com/reference/android/net/Uri.html . Es gibt auch eine URIKlasse developer.android.com/reference/java/net/URI.html ohne parseMethode. Die richtige Klasse ist also Uri.
Stellen

1
@ccheneson Warum sollte Uri korrekter sein als URI? Mit URI können Sie einfach die createMethode verwenden. Es ist so einfach zu bedienen wie Uri. Welchen Nutzen haben Sie von Uri?
Kaba713

Das ist richtig. Falsche Importe sind auch eines meiner nervigen Probleme.
Omid.N

34

Ich benutze nur das java.net Paket . Hier können Sie Folgendes tun:

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

URI unterscheidet sich von Uri.
Ali Alaoi

7

Wenn Sie Kotlin und Kotlin Android-Erweiterungen verwenden, gibt es eine schöne Möglichkeit, dies zu tun.

val uri = myUriString.toUri()

Um Kotlin-Erweiterungen ( KTX ) zu Ihrem Projekt hinzuzufügen, fügen Sie dem build.gradle Ihres App-Moduls Folgendes hinzu

  repositories {
    google()
}

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

2

Sie können einen String mit Uri.parse () wie unten gezeigt in einen Uri analysieren :

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

Das folgende Beispiel zeigt, wie Sie Ihren neu erstellten Uri implizit verwenden können. Wird in einem Browser auf dem Telefon des Benutzers angezeigt.

// 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: Es gibt einen Unterschied zwischen Androids URI und Uri .


-1

Was machst du mit der URI?

Wenn Sie es beispielsweise nur mit einem HttpGet verwenden möchten, können Sie die Zeichenfolge direkt beim Erstellen der HttpGet-Instanz verwenden.

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

2
Aber zum Beispiel android.widget.ImageView.setImageURInicht - es ist also eine absolut gültige Frage.
Martin

1
Eigentlich beantwortet dies nicht die Frage
Jürgen K.

-1

Javas Parser-In java.net.URIschlägt fehl, wenn der URI nicht vollständig seinen Standards entspricht. Versuchen Sie beispielsweise zu analysieren : http://www.google.com/search?q=cat|dog. Für die vertikale Leiste wird eine Ausnahme ausgelöst.

urllib macht es einfach, einen String in einen zu konvertieren java.net.URI. Die URL wird vorverarbeitet und maskiert.

assertEquals("http://www.google.com/search?q=cat%7Cdog",
    Urls.createURI("http://www.google.com/search?q=cat|dog").toString());
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.