2010-08-15 5 views
116

문자열을 Java (Android)의 Uri로 변환하려면 어떻게해야합니까? 예 :문자열을 Uri로 변환

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

myUri = ???;

답변

273

당신은 당신이 URI에 무슨 말을하는 건가요 Uri

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

에 다음을 추가 프로젝트에 코 틀린 확장 (KTX)를 추가합니다. 첫 번째 Uri는 URI로 변경해야합니다 (java.net 패키지의 경우). 두 번째로 "구문 분석"생성자가 없습니다. 내가 뭘 잘못하고 있는지 알 겠어? –

+1

http://developer.android.com/reference/android/net/Uri.html의'parse' 메쏘드를 가진'Uri' 클래스가 있습니다. 또한'parse' 메소드가없는'URI' 클래스 http://developer.android.com/reference/java/net/URI.html이 있습니다. 따라서 사용하기에 적합한 클래스는 '우리'입니다. 올바른 수입을 가지고 있는지 확인하십시오. – ccheneson

+0

@ccheneson 왜 Uri가 URI보다 정확해야합니까? URI를 사용하면'create' 메소드를 사용할 수 있습니다.그것은 Uri만큼 사용하기 쉽습니다. 그럼 우리에게서 무슨 유익이 있니? – kaba713

1

에서 parse 정적 인 방법을 사용할 수 있습니다 ?

예를 들어 HttpGet과 함께 사용하려는 경우 HttpGet 인스턴스를 만들 때 문자열을 직접 사용할 수 있습니다.

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

그러나 예를 들어'android.widget.ImageView.setImageURI'는 그렇지 않습니다 - 그래서 그것은 완전히 유효한 질문입니다. – Martin

+1

실제로이 질문에 대한 답변이 없습니다. –

12

난 그냥 java.net패키지을 사용하고 있습니다. 여기서 다음을 수행 할 수 있습니다

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

당신은 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); 
} 

NB는 : 로이드 URIUri 차이가있다.

0

java.net.URI의 Java 파서는 URI가 완전히 표준에 맞춰져 있지 않으면 실패합니다. 예를 들어, 구문 분석을 시도하십시오 : http://www.google.com/search?q=cat|dog. 수직 표시 줄에 예외가 발생합니다.

urllib을 사용하면 문자열을 java.net.URI으로 쉽게 변환 할 수 있습니다. URL을 사전 처리하고 이스케이프 처리합니다.

assertEquals("http://www.google.com/search?q=cat%7Cdog", 
    Urls.createURI("http://www.google.com/search?q=cat|dog").toString()); 
1

당신이 코 틀린과 코 틀린 안드로이드 확장자를 사용하는 경우,이 일을 아름다운 방법이있다.

val uri = myUriString.toUri() 

은 내가이 솔루션을 시도했지만 내가 그것으로 문제가있는 앱 모듈의 build.gradle

repositories { 
    google() 
} 

dependencies { 
    implementation 'androidx.core:core-ktx:0.1' 
}