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.