Android odpowiada na adres URL w zamiarze

152

Chcę, aby moja intencja została uruchomiona, gdy użytkownik przejdzie do określonego adresu URL: na przykład Android Market robi to za pomocą http://market.android.com/ urls. tak samo jak youtube. Ja też chcę to zrobić.

Isaac Waller
źródło
8
Świetna odpowiedź na to pytanie znajduje się na stackoverflow.com/questions/2448213/ ...
neu242
2
Jest lepsza odpowiedź na to pytanie stackoverflow.com/questions/1609573/ ...
rds

Odpowiedzi:

192

Ja to zrobiłem! Korzystanie <intent-filter>. Umieść w pliku manifestu następujące informacje:

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

Isaac Waller
źródło
9
Na mnie to nie działa. Czy możesz podać przykładowy link, który otworzyłby aplikację.
Pascal Klein
7
Chciałbym zareagować na „www.youtube.com”, ale NIE na „www.youtube.com/fr /”… Masz jakiś pomysł, jak mogę to zrobić?
Gilbou
1
Nie wiem, jak to działa na całym świecie. Po prostu nie działa na chrome i zawsze otwiera link w przeglądarce, dopóki nie umieścisz elementu „android: pathPrefix”. Odpowiedź i tak nie ma wartości kategorii, jak wspomniano w dokumentacji. Jeśli to nadal nie działa dla kogoś, skieruj to: stackoverflow.com/a/21727055/2695276 PS: walczyłem z tym przez wiele dni.
Rajat Sharma
1
Ważne jest, aby wiedzieć, że to działa tylko wtedy, gdy otworzysz link POZA przeglądarką, z aplikacji notatek lub wiadomości z WhatsApp, działa na Lollipop
D4rWiNS
10

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

Na przykład musiałem wykonać następujące czynności dla aplikacji, która otwierałaby się, gdy użytkownik otworzył link do formularzy Google Drive, www.docs.google.com/forms

Zauważ, że prefiks ścieżki jest opcjonalny.

        <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>
Jordan Réjaud
źródło