Blog technique sur mes expériences de développeur.
22 juin 2013
Dans cet article, nous allons voir comment ouvrir nos applications Android à partir d’une URI. Un exemple d’utilisation très simple serait par exemple d’associer une Activity d’une application à une URI précise comportant des données.
Je vous propose d’illustrer cet article avec l’utilisation de deux QR Codes. Afin d’être sûre que ça soit notre application qui soit sélectionnée automatiquement pour ouvrir notre URI, nous allons construire une URI au format un peu particulier, composée des éléments suivants :
Concrètement, nos URI seront de la forme scheme://host/data. Dans le cadre de cet article, j’ai créé deux QR Codes qui redirigent vers les URI suivantes :
A noter que les QR Codes ont été générés grâce à ce site.
Dans le fichier AndroidManifest.xml, il convient d’ajouter à notre activité un intent filter faisant référence à la structure de notre QR Code. Dans mon cas, je souhaite que mes URI soient ouvertes avec mon Activity principale.
Voici donc ce à quoi ressemble mon fichier :
<activity
android:name="fr.blog.rolandl.qrcode.MainViewActivity"
android:label="@string/app_name"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<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="blogrolandl"
android:host="blog.rolandl.fr"
android:pathPattern="/.*"
/>
</intent-filter>
</activity>
On retrouve bien le scheme, notre host ainsi qu’une expression régulière permettant de faire référence à la partie data de notre URI.
Il convient maintenant de récupérer les fameuses données extraites de notre URI. Je vous propose de le faire dans la méthode onResume() ce qui permettra d’accéder aux données bien que l’application soit déjà en arrière plan.
Récupérer les données est en réalité un jeu d’enfant comme en témoigne le code ci-dessous :
@Override
protected void onResume() {
super.onResume();
//On récupère les données
final String data = getIntent().getData().getLastPathSegment();
//On affiche
Toast.makeText(this, data, Toast.LENGTH_LONG).show();
}
Je vous laisse bien évidemment sécuriser votre application et la récupération des données comme il faut !
Une fois l’application installée sur votre terminal Android, il ne vous reste plus qu’à scanner l’un des QR Code via une application. Vous devriez alors être directement redirigé vers votre application comme en témoigne la capture d’écran ci-dessous :