Pour obtenir des instructions détaillées sur la manière d'obtenir un identifiant unique pour chaque appareil Android à partir duquel votre application est installée, consultez cette publication officielle de l'Android Developers Blog :
http://Android-developers.blogspot.com/2011/03/identifying-app-installations.html
Il semble que la meilleure solution consiste à en créer un vous-même lors de l'installation, puis à le lire lorsque l'application est relancée.
Personnellement, je trouve cela acceptable mais pas idéal. Aucun identifiant fourni par Android ne fonctionne dans tous les cas, car la plupart dépendent de l'état des radios du téléphone (wifi allumé/éteint, cellulaire allumé/éteint, bluetooth allumé/éteint). Les autres comme Settings.Secure.ANDROID_ID doivent être implémentés par le fabricant et ne sont pas garantis d'être uniques.
Voici un exemple d'écriture de données dans un fichier INSTALLATION qui sera stocké avec toutes les autres données enregistrées localement par l'application.
public class Installation {
private static String sID = null;
private static final String INSTALLATION = "INSTALLATION";
public synchronized static String id(Context context) {
if (sID == null) {
File installation = new File(context.getFilesDir(), INSTALLATION);
try {
if (!installation.exists())
writeInstallationFile(installation);
sID = readInstallationFile(installation);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
return sID;
}
private static String readInstallationFile(File installation) throws IOException {
RandomAccessFile f = new RandomAccessFile(installation, "r");
byte[] bytes = new byte[(int) f.length()];
f.readFully(bytes);
f.close();
return new String(bytes);
}
private static void writeInstallationFile(File installation) throws IOException {
FileOutputStream out = new FileOutputStream(installation);
String id = UUID.randomUUID().toString();
out.write(id.getBytes());
out.close();
}
}
2 votes
@Mudassir : Donc, en gros, vous voulez quelque chose qui est "gravé dans le marbre", "codé en dur", qui ne changera jamais et qui est fiable à 100 % ? Intel a essayé... lisez ceci schneier.com/essay-187.html
0 votes
@MisterSquonk Je veux quelque chose de ce genre. J'aime ce qui est "gravé dans la pierre" :-)
0 votes
@Mudassir : Et bien bonne chance pour trouver ça mais je serais surpris que vous puissiez le trouver. Tout au plus, je travaillerais sur le principe de la chose qui est la moins susceptible d'être changée / piratée ou autre pour l'utiliser comme base pour quelque chose qui est aussi "unique" que possible. Après cela, essayez d'écrire du code pour compenser tout problème en cours de route.
0 votes
Déjà demandé stackoverflow.com/questions/2322234/
2 votes
@rds : Je sais que la question a déjà été posée, et j'ai également essayé les solutions données dans les messages précédents, comme je l'ai mentionné dans ma question. Mes critères sont différents.
0 votes
@rds : La question à laquelle vous avez fait référence concerne spécifiquement la récupération du numéro de série Android. Cette question concerne l'obtention d'un identifiant qui est également disponible sur les appareils non Android.