Android
Diepe links verwerken
Zoeken…
Invoering
Deep links zijn URL's die gebruikers rechtstreeks naar specifieke inhoud in uw app leiden. U kunt deep links instellen door intentiefilters toe te voegen en gegevens uit inkomende intenties te extraheren om gebruikers naar het juiste scherm in uw app te leiden.
parameters
<data> Attribuut | Details |
---|---|
schema | Het schemaonderdeel van een URI (hoofdlettergevoelig). Voorbeelden: http , https , ftp |
gastheer | Het hostgedeelte van een URI (hoofdlettergevoelig). Voorbeelden: google.com , example.org |
haven | Het poortgedeelte van een URI. Voorbeelden: 80 , 443 |
pad | Het padgedeelte van een URI. Moet beginnen met / . Voorbeelden: / , /about |
pathPrefix | Een voorvoegsel voor het padgedeelte van een URI. Voorbeelden: /item , /article |
pathPattern | Een patroon dat overeenkomt met het padgedeelte van een URI. Voorbeelden: /item/.* , /article/[0-9]* |
mime type | Een mime-type dat past. Voorbeelden: image/jpeg , audio/* |
Opmerkingen
Het <intent-filter>
Deze combinatie van <action>
en <category>
elementen vertelt het Android-systeem dat een specifieke activiteit moet worden gestart wanneer de gebruiker op een koppeling in een andere toepassing klikt.
<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>
Meerdere <data>
-tags
De set deep links die door uw <intent-filter>
ondersteund, is het crossproduct van alle <data>
-elementen die u in dat intent-filter definieert. De voorbeelden van meerdere domeinen, meerdere paden en meerdere schema's tonen dit aan.
Middelen
- Deep links inschakelen voor app-inhoud (developer.android.com)
-
<intent-filter>
(developer.android.com
Eenvoudige deep link
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>
Dit accepteert elke link die begint met http://www.example.com
als een diepe link om uw MainActivity
te starten.
Meerdere paden op één domein
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>
Hiermee wordt uw MainActivity
wanneer de gebruiker op een van deze links klikt:
-
http://www.example.com/
-
http://www.example.com/about
-
http://www.example.com/map
Meerdere domeinen en meerdere paden
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>
Hiermee wordt uw MainActivity gestart wanneer de gebruiker op een van deze links klikt:
-
http://www.example.com/
-
http://www.example2.com/
-
http://www.example.com/map
-
http://www.example2.com/map
Zowel http als https voor hetzelfde domein
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>
Hiermee wordt uw MainActivity gestart wanneer de gebruiker op een van deze links klikt:
-
http://www.example.com/
-
https://www.example.com/
-
http://www.example.com/map
-
https://www.example.com/map
Query-parameters ophalen
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");
}
}
}
Als de gebruiker op een link naar http://www.example.com/map?param1=FOO¶m2=BAR
klikt, heeft param1
hier de waarde "FOO"
en param2
heeft de waarde "BAR"
.
PathPrefix gebruiken
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>
Hiermee wordt uw MainActivity gestart wanneer de gebruiker op een koppeling klikt die begint met http://www.example.com/item
, zoals:
-
https://www.example.com/item
-
http://www.example.com/item/1234
-
https://www.example.com/item/xyz/details