Konversi String ke Uri


176

Bagaimana saya bisa mengubah String ke Uri di Java (Android)? yaitu:

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

myUri = ???;

Jawaban:


400

Anda dapat menggunakan parsemetode statis dariUri

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

4
Saya sudah mencoba solusi ini tetapi saya punya masalah dengan itu. Uri pertama perlu diubah menjadi URI (jika berasal dari paket java.net). Kedua tidak memiliki konstruktor "parse". Apakah Anda tahu apa yang saya lakukan salah?
Jürgen K.

2
Ada Urikelas dengan parsemetode developer.android.com/reference/android/net/Uri.html . Ada juga URIclass developer.android.com/reference/java/net/URI.html tanpa parsemetode. Jadi kelas yang tepat untuk digunakan adalah Uri. Pastikan Anda memiliki impor yang benar
ccheneson

1
@ccheneson Mengapa Uri lebih benar daripada URI? Dengan URI Anda bisa menggunakan createmetode ini. Mudah digunakan seperti Uri. Jadi, apa manfaatnya dari Uri?
kaba713

Itu benar. Impor yang salah juga merupakan salah satu masalah saya yang menyebalkan.
Omid.N

34

Saya hanya menggunakan java.net paket . Di sini Anda dapat melakukan hal berikut:

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

URI berbeda dari Uri.
Ali Alaoi

7

Jika Anda menggunakan Kotlin dan Kotlin android ekstensi, maka ada cara yang indah untuk melakukan hal ini.

val uri = myUriString.toUri()

Untuk menambahkan ekstensi Kotlin ( KTX ) ke proyek Anda, tambahkan yang berikut ke build.gradle modul aplikasi Anda

  repositories {
    google()
}

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

2

Anda dapat mengurai String ke Uri dengan menggunakan Uri.parse () seperti yang ditunjukkan di bawah ini:

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

Berikut ini adalah contoh bagaimana Anda dapat menggunakan Uri yang baru dibuat dalam maksud tersirat. Untuk dilihat di browser di ponsel pengguna.

// 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: Ada perbedaan antara Android URI dan Uri .


-1

Apa yang akan kamu lakukan dengan URI?

Misalnya, jika Anda akan menggunakannya dengan HttpGet, Anda bisa langsung menggunakan string ketika membuat instance HttpGet.

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

2
Tapi misalnya android.widget.ImageView.setImageURItidak akan - jadi ini adalah pertanyaan yang benar-benar valid.
Martin

1
sebenarnya ini tidak menjawab pertanyaan
Jürgen K.

-1

Pengurai Java java.net.URIakan gagal jika URI tidak sepenuhnya dikodekan dengan standarnya. Misalnya, mencoba untuk mengurai: http://www.google.com/search?q=cat|dog. Pengecualian akan diberikan untuk bilah vertikal.

urllib memudahkan untuk mengonversi string menjadi a java.net.URI. Ini akan melakukan pra-proses dan keluar dari URL.

assertEquals("http://www.google.com/search?q=cat%7Cdog",
    Urls.createURI("http://www.google.com/search?q=cat|dog").toString());
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.