Android
Hantering av djupa länkar
Sök…
Introduktion
Djupa länkar är webbadresser som tar användare direkt till specifikt innehåll i din app. Du kan ställa in djupa länkar genom att lägga till avsiktsfilter och extrahera data från inkommande avsikter för att driva användare till höger skärm i din app.
parametrar
<data> Attribut | detaljer |
---|---|
schema | Schemadelen av en URI (skiftlägeskänslig). Exempel: http , https , ftp |
värd | Värddelen av en URI (skiftlägeskänslig). Exempel: google.com , example.org |
hamn | Hamndelen av en URI. Exempel: 80 , 443 |
väg | Vägdelen av en URI. Måste börja med / . Exempel: / , /about |
pathPrefix | Ett prefix för vägdelen av en URI. Exempel: /item , /article |
pathPattern | Ett mönster för att matcha för vägdelen av en URI. Exempel: /item/.* , /article/[0-9]* |
mimeType | En mimetyp att matcha. Exempel: image/jpeg , audio/* |
Anmärkningar
<intent-filter>
Denna kombination av <action>
och <category>
-element är det som säger Android-systemet att en specifik aktivitet bör startas när användaren klickar på en länk i en annan applikation.
<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>
Flera <data>
-taggar
Uppsättningen av djupa länkar som din <intent-filter>
stöder är korsprodukten av alla <data>
-element som du definierar i det avsiktsfiltret. Exempel på flera domäner, flera sökvägar och flera schema visar detta.
Resurser
- Aktivera djupa länkar för appinnehåll (Developer.android.com)
-
<intent-filter>
(Developer.android.com
Enkel djup länk
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>
Detta accepterar alla länkar som börjar med http://www.example.com
som en djuplänk för att starta din MainActivity
.
Flera sökvägar på en enda domän
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>
Detta startar din MainActivity
när användaren klickar på någon av dessa länkar:
-
http://www.example.com/
-
http://www.example.com/about
-
http://www.example.com/map
Flera domäner och flera sökvägar
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>
Detta startar din MainActivity när användaren klickar på någon av dessa länkar:
-
http://www.example.com/
-
http://www.example2.com/
-
http://www.example.com/map
-
http://www.example2.com/map
Både http och https för samma domän
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>
Detta startar din MainActivity när användaren klickar på någon av dessa länkar:
-
http://www.example.com/
-
https://www.example.com/
-
http://www.example.com/map
-
https://www.example.com/map
Hämtar frågeparametrar
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");
}
}
}
Om användaren klickar på en linkto http://www.example.com/map?param1=FOO¶m2=BAR
, kommer param1
här att ha ett värde på "FOO"
och param2
har ett värde på "BAR"
.
Med hjälp av pathPrefix
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>
Detta kommer att starta din MainActivity när användaren klickar på en länk som börjar med http://www.example.com/item
, till exempel:
-
https://www.example.com/item
-
http://www.example.com/item/1234
-
https://www.example.com/item/xyz/details