2014-03-31 2 views
10

특정 웹 페이지에서 정보를 추출 할 수있는 앱을 개발 중입니다. 사용자가 브라우저의 특정 URL 경로에 있고 공유 버튼을 누르면 내 앱이 리시버 앱 목록에 표시됩니다.특정 URL에 대해서만 내 의도 선택기에 내 앱이 표시되게하려면 어떻게해야합니까?

나는 매니페스트이를 추가하여 쉽게 그렇게 할 수 있습니다

<intent-filter android:label="@string/app_name" > 
    <action android:name="android.intent.action.SEND" /> 
    <data android:mimeType="text/plain" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
</intent-filter> 

그러나,이 내 애플, 모든 URL의 목록은 아무 상관이없는 곳 모든 사람들을 표시 할 것입니다.

www.example.com/foo/bla.html

www.example.com/foo/bar/blabla.html 대신 난 단지 이러한 URL에서 선택기에 표시되는 응용 프로그램을 싶습니다

하지만 이러한에서

:

www.example.com

www.foobar. com

등입니다. 특정 호스트의 특정 경로 내에서만 가능합니다. 또한 사용자가 기준과 일치하는 링크를 클릭 할 때 내 앱이 시작되는 것을 원하지 않습니다. 공유 메뉴에서만 호출해야합니다.

제 질문은 다음과 같습니다. 특정 URL에만 표시되도록 앱을 의도적으로 표시하도록 제한하려면 어떻게해야합니까?

+0

해당 URL에 하위 도메인을 만들 수 있습니까? bla.example.com 같은가요? –

+0

아니요, 옵션이 아닙니다. – marlar

+1

당신은 원하는 투표를 할 자격이 있지만, 나는 당신이 얻는 모든 대답을 downvoting하는 논리를 보지 못합니다. 그것은 다른 누구도 대답하지 못하게하고 사실을 좋아하지 않더라도 CommonsWares 대답은 유익하고 정확하며 Dharanis 대답은 가장 합리적인 해결책입니다 –

답변

4

대상 활동에 다음 필터를 추가하십시오. 1. 호스트 사이트 이름. 2. 체계 사이트 http 또는 https의 구성표. 3. 경로에 앱이 표시해야하는 파일 경로가 있습니다.

<intent-filter> 
      <data 
       android:host="www.example.com" 
       android:scheme="http" 
       android:path="/foo/bla.html" 
       /> 
      <action android:name="android.intent.action.VIEW" /> 
      <category android:name="android.intent.category.DEFAULT" > 
      </category> 
      <category android:name="android.intent.category.BROWSABLE" > 
      </category> 
</intent-filter> 
+0

이렇게하면 내 앱이 원하는 URL과 일치하는 클릭에 응답합니다. 나는 그 URL을 "도용"하고 싶지 않습니다. 사용자가 공유 버튼을 누르면 목록에 표시되는 앱 만 있으면됩니다. 그러나 특정 URL을 탐색 할 때에 만 가능합니다. – marlar

+0

@marlar 이걸 시도 했나요? –

+0

위의 코드와 함께 을 사용해 보시지 않으시겠습니까? ... http://developer.android.com/guide/topics/manifest/grant-uri-permission-element를 참조하십시오. html .. –

-1

사용

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

pathPrefix 어떻게 특정 URL에 대한 선택 의도에 표시 내 응용 프로그램을 제한 할 수 있습니다?

수 없습니다. ACTION_SEND에는 "특정 URL에서만"또는 "WhatsApp 사용자 에게서만"또는 "왼손잡이 알라스카 파이프 용접기에서만"의 개념이 없습니다.

다른 활동과 크게 다르지 않습니다. <intent-filter>Intent이 배달되는 대상을 제어합니다. ~. Intent은 보안 관련 항목 (사용 권한, 구성 요소 내보내기 여부 등)을 제외하고는 어떤 항목도 제공하지 않습니다.

따라서 ACTION_VIEW을 사용하면 URL이 에서 다른 활동 ('이 URL을보고 싶습니다')으로 전송됩니다.URL은 의 Uri으로 바뀌고 <intent-filter><data> 요소를 통해 필터링 할 수 있기 때문에 효과가 있습니다.

그러나 ACTION_SEND은 URL을 가질 필요가 없으며 URL이있을 필요없이 여분의 형태로 된 페이로드 일뿐입니다. 그것은 걸러 낼 수있는 것이 아닙니다.

따라서 원하는 것은 지원되지 않습니다.

관련 문제