Android
Manipulation de liens profonds
Recherche…
Introduction
Les liens profonds sont des URL qui permettent aux utilisateurs d'accéder directement à un contenu spécifique de votre application. Vous pouvez configurer des liens profonds en ajoutant des filtres d'intention et en extrayant des données des intentions entrantes afin de diriger les utilisateurs vers le bon écran de votre application.
Paramètres
<data> Attribut | Détails |
---|---|
schème | La partie schéma d'un URI (sensible à la casse). Exemples: http , https , ftp |
hôte | La partie hôte d'un URI (sensible à la casse). Exemples: google.com , example.org |
Port | La partie port d'un URI. Exemples: 80 , 443 |
chemin | La partie chemin d'un URI. Doit commencer par / . Exemples: / , /about |
pathPrefix | Un préfixe pour la partie chemin d'un URI. Exemples: /item , /article |
pathPattern | Un modèle à faire correspondre à la partie chemin d'un URI. Exemples: /item/.* , /article/[0-9]* |
mimeType | Un type de mime correspondant. Exemples: image/jpeg , audio/* |
Remarques
Le <intent-filter>
Cette combinaison d'éléments <action>
et <category>
est ce qui indique au système Android qu'une activité spécifique doit être lancée lorsque l'utilisateur clique sur un lien dans une autre application.
<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>
Plusieurs balises <data>
L'ensemble des liens profonds pris en charge par votre <intent-filter>
est le produit croisé de tous les éléments <data>
que vous définissez dans ce filtre d'intention. Les exemples de domaines multiples, de chemins multiples et de schémas multiples en sont la preuve.
Ressources
- Activation des liens profonds pour le contenu de l'application (developer.android.com)
-
<intent-filter>
(developer.android.com
Lien profond simple
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>
Cela acceptera tout lien commençant par http://www.example.com
comme un lien profond pour démarrer votre MainActivity
.
Plusieurs chemins sur un seul domaine
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>
Cela lancera votre MainActivity
lorsque l'utilisateur MainActivity
l'un de ces liens:
-
http://www.example.com/
-
http://www.example.com/about
-
http://www.example.com/map
Plusieurs domaines et plusieurs chemins
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>
Cela lancera votre MainActivity lorsque l'utilisateur cliquera sur l'un de ces liens:
-
http://www.example.com/
-
http://www.example2.com/
-
http://www.example.com/map
-
http://www.example2.com/map
Les deux http et https pour le même domaine
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>
Cela lancera votre MainActivity lorsque l'utilisateur cliquera sur l'un de ces liens:
-
http://www.example.com/
-
https://www.example.com/
-
http://www.example.com/map
-
https://www.example.com/map
Récupération des paramètres de requête
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");
}
}
}
Si l'utilisateur clique sur un lien vers http://www.example.com/map?param1=FOO¶m2=BAR
, alors param1
ici aura la valeur "FOO"
et param2
aura la valeur "BAR"
.
Utiliser 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>
Cela lancera votre mainActivity lorsque l'utilisateur cliquera sur un lien commençant par http://www.example.com/item
, tel que:
-
https://www.example.com/item
-
http://www.example.com/item/1234
-
https://www.example.com/item/xyz/details