Android In Absicht auf URL antworten

152

Ich möchte, dass meine Absicht gestartet wird, wenn der Benutzer zu einer bestimmten URL wechselt: Der Android-Markt tut dies beispielsweise mit http://market.android.com/ urls. Youtube auch. Ich möchte, dass meine das auch tun.

Isaac Waller
quelle
8
Es gibt eine gute Antwort auf diese Frage unter stackoverflow.com/questions/2448213/…
neu242
2
Es gibt eine bessere Antwort auf diese Frage stackoverflow.com/questions/1609573/…
rds

Antworten:

192

Ich hab es gemacht! Verwenden von <intent-filter>. Fügen Sie Folgendes in Ihre Manifestdatei ein:

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

Das funktioniert perfekt!

Isaac Waller
quelle
9
Es funktioniert nicht für mich. Können Sie bitte einen Beispiel-Link angeben, der die Anwendung öffnen würde?
Pascal Klein
7
Ich möchte auf "www.youtube.com" reagieren, aber NICHT auf "www.youtube.com/fr /" ... Irgendeine Idee, wie ich das machen kann?
Gilbou
5
Schauen Sie auf stackoverflow.com/questions/2958701/…
J-Rou
1
Ich bin mir nicht sicher, wie das für die ganze Welt funktioniert. Funktioniert einfach nicht mit Chrome und öffnet den Link immer im Browser, bis Sie das Element "android: pathPrefix" platzieren. Die Antwort hat sowieso nicht die in der Dokumentation genannten Kategoriewerte. Wenn es für jemanden immer noch nicht funktioniert, lesen Sie dies bitte: stackoverflow.com/a/21727055/2695276 PS: tagelang darum gekämpft.
Rajat Sharma
1
Es ist wichtig zu wissen, dass dies nur funktioniert, wenn Sie den Link AUSSERHALB eines Browsers, über die Notizen-App oder eine Nachricht von WhatsApp öffnen. Es funktioniert auf Lollipop
D4rWiNS
10

Möglicherweise müssen Sie Ihrem Absichtsfilter verschiedene Permutationen hinzufügen, damit er in verschiedenen Fällen funktioniert (http / https / ect).

Zum Beispiel musste ich Folgendes für eine App tun, die geöffnet wurde, wenn der Benutzer einen Link zu Google Drive-Formularen öffnete: www.docs.google.com/forms

Beachten Sie, dass das Pfadpräfix optional ist.

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