Konversi String ke Uri

176

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

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

myUri = ???;

Teknisi
sumber

Jawaban:

400

Anda dapat menggunakan parsemetode statis dariUri

Uri myUri = Uri.parse("http://stackoverflow.com")
ccheneson
sumber
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);
Jürgen K.
sumber
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'
}
Midhun Vijayakumar
sumber
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 .

JSON C11
sumber
-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");
Stuart Grimshaw
sumber
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());
EricE
sumber