Ludovic ROLAND

Blog technique sur mes expériences de développeur.

Android : Ouvrir son application à partir d’une URI

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.

Les QR Codes

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 :

  • un schème ;
  • un host ;
  • des données.

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 :

  • blogrolandl://blog.rolandl.fr/data1
  • blogrolandl://blog.rolandl.fr/data2

A noter que les QR Codes ont été générés grâce à ce site.

L’application Android

Le fichier AndroidManifest.xml

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.

L’Activity

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 !

Le résultat

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 :

Commentaires