Android : Identifiant unique

J’ai eu, au boulot, à utiliser l’identifiant unique de l’iPhone comme login pour la connexion des clients. J’ai voulu faire de même sur une application Android et je vous propose donc deux petites solutions.

Solution simple

La première solution que je vais vous proposer ne nécessite aucune permission et se résume en une seul ligne.

String android_id = Secure.getString(getContentResolver(), Secure.ANDROID_ID);

Et voilà, le tour est joué, rien de compliqué.

Solution plus complète

Certains n’auront pas confiance en cette simple ligne de code et voudront un code un peu plus complet.

Pour commencer il faut demander une permission, il s’agit de android.permission.READ_PHONE_STATE. Ouvrez le fichier AndroidManifest.xml, et ajoutez cette permission :

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
	package="fr.expdev.test.testview1" android:versionCode="1"
	android:versionName="1.0">
 
	<!-- ... -->
 
	<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
 
</manifest>

Nous pouvons maintenant utiliser les lignes de code ci-dessous :

final TelephonyManager tm = (TelephonyManager)getBaseContext().getSystemService(Context.TELEPHONY_SERVICE);
 
// cf : ci-dessus
String android_id = Secure.getString(getContentResolver(), Secure.ANDROID_ID);
// Numéro IMEI
String device_id = tm.getDeviceId();
// Numéro de série de la carte SIM
// NULL S'il n'y pas pas de carte SIM
String sim_serial  = tm.getSimSerialNumber();
 
// Génération d'un numéro unique du genre : XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX
UUID deviceUUID = new UUID(android_id.hashCode(), ((long)device_id.hashCode() << 32) | sim_serial.hashCode());

Et voilà le tour est joué, l’identifiant est basé sur :

  • l’identifiant d’Android
  • le numéro IMEI
  • le serial de la carte SIM

Avec un truc comme ça vous êtes sûr d’identifier une seule et unique personne.

En fonction de vos besoins vous n’aurez besoin que d’un ou de deux des trois identifiants donnés par l’exemple.

Pour finir, il vous suffit d’utiliser la commande ci-dessous pour transformer votre objet UUDI en String :

deviceUUID.toString();
Publié dans Android

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*