2009-02-08 9 views
146

Chcę, aby moje intencje zostały uruchomione, gdy użytkownik przejdzie do określonego adresu URL: na przykład rynek Android robi to z adresami URL http://market.android.com/. tak samo jak youtube. Ja też chcę to zrobić.Android Odpowiada na URL w intencji

+8

Jest wielką odpowiedź na to pytanie w http://stackoverflow.com/questions/2448213/how-to-implement-my-very-own-uri-schema-on-android/2448531#2448531 – neu242

+2

Jest lepsza odpowiedź na to pytanie http://stackoverflow.com/questions/1609573/intercepting-links-from-the-browser-to-open-my-android-app – rds

Odpowiedz

183

Zrobiłem to! Korzystanie z <intent-filter>. Dodaj do pliku manifestu:

<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> 

To działa idealnie!

+8

To nie działa dla mnie. Czy możesz podać przykład-Link, który otworzyłby Aplikację. –

+7

Chciałbym zareagować na "www.youtube.com", ale NIE na "www.youtube.com/fr /" ... Jakiś pomysł, jak to zrobić? – Gilbou

+0

To działa idealnie, dziękuję, ale muszę również uzyskać adres URL, który został kliknięty, aby otworzyć aplikację. ktoś może wyjaśnić, jak to zrobić? – boogieman

7

Może być konieczne dodanie różnych permutacji do filtru zamiany, aby działał w różnych przypadkach (http/https/ect).

Na przykład, miałem wykonać następujące czynności dla aplikacji, które byłyby otwarte, gdy użytkownik otworzy link do form Dysku Google, www.docs.google.com/forms

Zauważ, że przedrostek ścieżki jest opcjonalna.

 <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> 
Powiązane problemy