문자열을 Uri로 변환


177

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

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

myUri = ???;

답변:


400

parse정적 메소드를 사용할 수 있습니다.Uri

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

4
이 솔루션을 시도했지만 문제가 있습니다. 첫 번째 URI는 URI로 변경해야합니다 (java.net 패키지에서 온 경우). 둘째, "구문 분석"생성자가 없습니다. 내가 뭘 잘못하고 있는지 아십니까?
Jürgen K.

2
developer.android.com/reference/android/net/Uri.html 메소드 가있는 Uri클래스 가 있습니다 . 메소드가 없는 클래스 developer.android.com/reference/java/net/URI.html 도 있습니다 . 따라서 올바른 수업은 입니다. 당신이 올바른 수입이 있는지 확인parseURIparseUri
ccheneson

1
@ccheneson URI보다 URI가 더 정확한 이유는 무엇입니까? URI를 사용하면 create메소드를 사용할 수 있습니다 . Uri만큼 사용하기 쉽습니다. Uri는 어떤 이점이 있습니까?
kaba713

맞아 그거야. 잘못된 수입품은 저의 성가신 문제 중 하나입니다.
Omid.N

34

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

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

URI는 Uri와 다릅니다.
알리 Alaoi

7

Kotlin 및 Kotlin 안드로이드 확장을 사용하는 경우 이를 수행하는 아름다운 방법이 있습니다.

val uri = myUriString.toUri()

Kotlin 확장 ( KTX )을 프로젝트에 추가하려면 앱 모듈의 build.gradle에 다음을 추가하십시오.

  repositories {
    google()
}

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

3

아래와 같이 Uri.parse () 를 사용하여 문자열을 Uri로 구문 분석 할 수 있습니다 .

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 : Androids URIUri 사이에는 차이가 있습니다 .


-1

URI로 무엇을 하시겠습니까?

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

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

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

1
실제로 이것은 질문에 대답하지 않습니다
Jürgen K.

-1

java.net.URIURI가 표준으로 완전히 인코딩되지 않으면 Java 파서 가 실패합니다. 예를 들어 다음을 구문 분석하십시오 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());
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.