의도적으로 URL에 응답하는 Android


152

사용자가 특정 URL로 이동할 때 내 의도가 시작되기를 원합니다. 예를 들어 안드로이드 마켓은 http://market.android.com/ urls 로이 작업을 수행합니다 . YouTube도 마찬가지입니다. 나도 그렇게하고 싶어.



2
이 질문에 대한 답변이 더 있습니다 stackoverflow.com/questions/1609573/…
rds

답변:


192

내가 해냈어! 사용 <intent-filter>. 매니페스트 파일에 다음을 입력하십시오.

<intent-filter>
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.DEFAULT" />
  <category android:name="android.intent.category.BROWSABLE" />
  <data android:host="www.youtube.com" android:scheme="http" />
</intent-filter>

이것은 완벽하게 작동합니다!


9
그것은 나를 위해 작동하지 않습니다. 응용 프로그램을 여는 예제 링크를 제공 할 수 있습니까?
파스칼 클라인

7
"www.youtube.com"에는 반응하고 싶지만 "www.youtube.com/fr/"에는 반응하지 않습니다. 어떻게해야할지 잘 모르겠습니다.
Gilbou


1
이것이 전 세계에서 어떻게 작동하는지 확실하지 않습니다. 크롬에서는 작동하지 않으며 "android : pathPrefix"요소를 배치 할 때까지 브라우저에서 항상 링크를 엽니 다. 어쨌든 대답에는 설명서에 언급 된 범주 값이 없습니다. 그래도 작동하지 않으면 다음을 참조하십시오. stackoverflow.com/a/21727055/2695276 PS :이 일 동안 어려움을 겪었습니다.
Rajat Sharma

1
이것은 브라우저 외부의 링크, 메모 앱 또는 whatsapp의 메시지를 열 경우에만 작동한다는 것을 아는 것이 중요합니다. 롤리팝에서 작동 중입니다.
D4rWiNS

10

인 텐트 필터에 다른 순열을 추가하여 다른 경우 (http / https / ect)에서 작동하도록해야 할 수도 있습니다.

예를 들어 사용자가 Google 드라이브 양식에 대한 링크를 열 때 열리는 앱에 대해 다음을 수행해야했습니다. www.docs.google.com/forms

경로 접두사는 선택 사항입니다.

        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data
                android:scheme="http"
                android:host="docs.google.com"
                android:pathPrefix="/forms"/>
            <data
                android:scheme="http"
                android:host="www.docs.google.com"
                android:pathPrefix="/forms" />

            <data
                android:scheme="https"
                android:host="www.docs.google.com"
                android:pathPrefix="/forms" />

            <data
                android:scheme="https"
                android:host="docs.google.com"
                android:pathPrefix="/forms" />
        </intent-filter>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.