Dizeyi Uri'ye Dönüştür


177

Bir Dizeyi Java'da (Android) bir Uri'ye nasıl dönüştürebilirim? yani:

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

myUri = ???;

Yanıtlar:


400

Şu parseyöntemlerden statik yöntemi kullanabilirsiniz :Uri

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

4
Bu çözümü denedim ama bir sorunum var. İlk Uri'nin URI olarak değiştirilmesi gerekir (java.net paketindeyse). İkinci olarak, "ayrıştırma" yapıcısı yoktur. Neyi yanlış yaptığım hakkında bir fikrin var mı?
Jürgen K.

2
Developer.android.com/reference/android/net/Uri.html yöntemine Urisahip bir sınıf var . Bir de bulunmaktadır sınıf developer.android.com/reference/java/net/URI.html bir olmadan yöntemle. Kullanılacak doğru sınıf . Doğru içe parseURIparseUri
aktardığınızdan

1
@ccheneson Uri neden URI'den daha doğru olmalı? URI ile sadece createyöntemi kullanabilirsiniz . Uri kadar kullanımı basit. Peki Uri'den ne faydası var?
kaba713

Bu doğru. Yanlış ithalat da can sıkıcı problemlerimden biri.
Omid.N

34

Sadece java.net paketi kullanıyorum . Burada aşağıdakileri yapabilirsiniz:

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

URI, Uri'den farklıdır.
Ali Alaoi

7

Eğer kullanıyorsanız KOTLIN ve Kotlin uzantıları android, daha sonra bunu yapmanın güzel bir yolu yoktur.

val uri = myUriString.toUri()

Projenize Kotlin uzantıları ( KTX ) eklemek için uygulama modülünüzün build.gradle öğesine aşağıdakileri ekleyin

  repositories {
    google()
}

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

3

Aşağıda gösterildiği gibi Uri.parse () öğesini kullanarak bir Dizeyi bir Uri'ye ayrıştırabilirsiniz :

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

Aşağıda, yeni oluşturulan Uri'nizi örtük bir amaçta nasıl kullanabileceğinize bir örnek verilmiştir. Kullanıcıların telefonundaki bir tarayıcıda görüntülenecek.

// 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);
}

Not: Android URI ve Uri arasında bir fark var .


-1

URI ile ne yapacaksınız?

Örneğin sadece bir HttpGet ile kullanacaksanız, doğrudan HttpGet örneğini oluştururken dizeyi kullanabilirsiniz.

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

2
Ama örneğin android.widget.ImageView.setImageURIolmayacak - bu yüzden geçerli bir soru.
Martin

1
aslında bu soruya cevap vermez
Jürgen K.

-1

java.net.URIURI standartlarına tam olarak kodlanmamışsa Java'nın ayrıştırıcısı başarısız olur. Örneğin, ayrıştırmak deneyin: http://www.google.com/search?q=cat|dog. Dikey çubuk için bir istisna atılacaktır.

urllib bir dizeyi a'ya dönüştürmeyi kolaylaştırır java.net.URI. URL'yi önceden işleme koyacak ve kaçacaktır.

assertEquals("http://www.google.com/search?q=cat%7Cdog",
    Urls.createURI("http://www.google.com/search?q=cat|dog").toString());
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.