ฉันจะแปลงสตริงเป็น Uri ใน Java (Android) ได้อย่างไร เช่น:
String myUrl = "http://stackoverflow.com";
myUri = ???;
ฉันจะแปลงสตริงเป็น Uri ใน Java (Android) ได้อย่างไร เช่น:
String myUrl = "http://stackoverflow.com";
myUri = ???;
คำตอบ:
คุณสามารถใช้parse
วิธีการคงที่จากUri
Uri myUri = Uri.parse("http://stackoverflow.com")
Uri
ชั้นด้วยparse
วิธีdeveloper.android.com/reference/android/net/Uri.html นอกจากนี้ยังมีURI
คลาสdeveloper.android.com/reference/java/net/URI.htmlโดยไม่มีparse
วิธีการ Uri
ดังนั้นระดับที่เหมาะสมที่จะใช้เป็น ตรวจสอบให้แน่ใจว่าคุณมีการนำเข้าที่ถูกต้อง
create
วิธีนี้ได้ มันใช้งานง่ายเหมือน Uri แล้วคุณได้ประโยชน์อะไรจาก Uri
ฉันเพียงแค่ใช้แพคเกจjava.net
ที่นี่คุณสามารถทำสิ่งต่อไปนี้:
String myUrl = "http://stackoverflow.com";
URI myURI = new URI(myUrl);
หากคุณกำลังใช้Kotlinและ Kotlin หุ่นยนต์ส่วนขยายแล้วมีวิธีที่สวยงามของการทำเช่นนี้
val uri = myUriString.toUri()
หากต้องการเพิ่มส่วนขยาย Kotlin ( KTX ) ให้กับโครงการของคุณให้เพิ่มสิ่งต่อไปนี้ใน build.gradle ของโมดูลแอป
repositories {
google()
}
dependencies {
implementation 'androidx.core:core-ktx:1.0.0-rc01'
}
คุณสามารถวิเคราะห์สตริงเป็น Uri ได้โดยใช้Uri.parse ()ดังที่แสดงด้านล่าง:
Uri myUri = Uri.parse("http://stackoverflow.com");
ต่อไปนี้เป็นตัวอย่างของวิธีที่คุณสามารถใช้ Uri ที่สร้างขึ้นใหม่ของคุณโดยเจตนา ที่จะดูในเบราว์เซอร์บนโทรศัพท์ของผู้ใช้
// 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);
}
หมายเหตุ:มีความแตกต่างระหว่างหุ่นยนต์เป็นURIและยูริ
คุณจะทำอะไรกับ URI
หากคุณเพิ่งจะใช้มันกับ HttpGet เช่นคุณสามารถใช้สตริงโดยตรงเมื่อสร้างอินสแตนซ์ HttpGet
HttpGet get = new HttpGet("http://stackoverflow.com");
android.widget.ImageView.setImageURI
จะไม่ - ดังนั้นจึงเป็นคำถามที่ถูกต้องสมบูรณ์
โปรแกรมแยกวิเคราะห์ของ Java java.net.URI
กำลังจะล้มเหลวหาก URI ไม่ได้เข้ารหัสตามมาตรฐานอย่างสมบูรณ์ http://www.google.com/search?q=cat|dog
ตัวอย่างเช่นลองที่จะแยก: จะมีข้อยกเว้นเกิดขึ้นสำหรับแถบแนวตั้ง
urllibทำให้การแปลงสตริงเป็น a java.net.URI
ได้ง่าย มันจะประมวลผลล่วงหน้าและหลีกเลี่ยง URL
assertEquals("http://www.google.com/search?q=cat%7Cdog",
Urls.createURI("http://www.google.com/search?q=cat|dog").toString());