Android
Umgang mit Deep Links
Suche…
Einführung
Deep Links sind URLs, über die Benutzer direkt zu bestimmten Inhalten in Ihrer App gelangen. Sie können Deep Links einrichten, indem Sie Absichtsfilter hinzufügen und Daten aus eingehenden Absichten extrahieren, um Benutzer zum rechten Bildschirm Ihrer App zu führen.
Parameter
<data> Attribut | Einzelheiten |
---|---|
planen | Der Schemateil einer URI (Groß- und Kleinschreibung beachten). Beispiele: http , https , ftp |
Wirt | Der Host- Teil einer URI (Groß- und Kleinschreibung wird berücksichtigt) Beispiele: google.com , example.org |
Hafen | Der Portteil einer URI. Beispiele: 80 , 443 |
Pfad | Der Pfadteil einer URI. Muss mit / beginnen Beispiele: / , /about |
pathPrefix | Ein Präfix für den Pfadteil eines URI. Beispiele: /item , /article |
Pfadmuster | Ein Muster für den Pfadteil eines URI. Beispiele: /item/.* , /article/[0-9]* |
Mime Typ | Ein übereinstimmender Mime-Typ. Beispiele: image/jpeg , audio/* |
Bemerkungen
Der <intent-filter>
Diese Kombination der Elemente <action>
und <category>
teilt dem Android-System mit, dass eine bestimmte Aktivität gestartet werden soll, wenn der Benutzer auf einen Link in einer anderen Anwendung klickt.
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data ... />
</intent-filter>
Mehrere <data>
-Tags
Der Satz von Deep Links, den Ihr <intent-filter>
unterstützt, ist das Kreuzprodukt aller <data>
-Elemente, die Sie in diesem Absichtsfilter definieren. Die Beispiele für mehrere Domänen, mehrere Pfade und mehrere Schemas zeigen dies.
Ressourcen
- Aktivieren von Deep Links für App-Inhalte (developer.android.com)
-
<intent-filter>
(developer.android.com
Einfache tiefe Verbindung
AndroidManifest.xml:
<activity android:name="com.example.MainActivity" >
<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="www.example.com" />
</intent-filter>
</activity>
Dadurch wird jeder Link, der mit http://www.example.com
beginnt, als tiefer Link zum Starten Ihrer MainActivity
.
Mehrere Pfade in einer einzigen Domäne
AndroidManifest.xml:
<activity android:name="com.example.MainActivity" >
<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="www.example.com" />
<data android:path="/" />
<data android:path="/about" />
<data android:path="/map" />
</intent-filter>
</activity>
Dies startet Ihre MainActivity
wenn der Benutzer auf einen dieser Links klickt
-
http://www.example.com/
-
http://www.example.com/about
-
http://www.example.com/map
Mehrere Domänen und mehrere Pfade
AndroidManifest.xml:
<activity android:name="com.example.MainActivity" >
<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="www.example.com" />
<data android:scheme="http"
android:host="www.example2.com" />
<data android:path="/" />
<data android:path="/map" />
</intent-filter>
</activity>
Dies startet Ihre MainActivity, wenn der Benutzer auf einen der folgenden Links klickt:
-
http://www.example.com/
-
http://www.example2.com/
-
http://www.example.com/map
-
http://www.example2.com/map
Sowohl http als auch https für dieselbe Domäne
AndroidManifest.xml:
<activity android:name="com.example.MainActivity" >
<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" />
<data android:scheme="https" />
<data android:host="www.example.com" />
<data android:path="/" />
<data android:path="/map" />
</intent-filter>
</activity>
Dies startet Ihre MainActivity, wenn der Benutzer auf einen der folgenden Links klickt:
-
http://www.example.com/
-
https://www.example.com/
-
http://www.example.com/map
-
https://www.example.com/map
Abfrageparameter abrufen
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent intent = getIntent();
Uri data = intent.getData();
if (data != null) {
String param1 = data.getQueryParameter("param1");
String param2 = data.getQueryParameter("param2");
}
}
}
Wenn der Benutzer auf eine Verknüpfung zu http://www.example.com/map?param1=FOO¶m2=BAR
klickt, hat param1
hier den Wert "FOO"
und param2
den Wert "BAR"
.
PathPrefix verwenden
AndroidManifest.xml:
<activity android:name="com.example.MainActivity" >
<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="www.example.com"
android:path="/item" />
</intent-filter>
</activity>
Dies startet Ihre MainActivity, wenn der Benutzer auf einen Link klickt, der mit http://www.example.com/item
beginnt.
-
https://www.example.com/item
-
http://www.example.com/item/1234
-
https://www.example.com/item/xyz/details