Device eindeutig erkennen - Was macht dieser Code ?

  • Antworten:1
Arkadius M.
  • Forum-Beiträge: 12

07.08.2014, 13:09:38 via Website

Hallo,

ich möchte gerne ein Device eindeutig erkennen. Ich habe im Internet gesucht und bin dabei auf den folgenden Quellcode gestoßen.

final TelephonyManager tm = (TelephonyManager) getBaseContext().getSystemService(Context.TELEPHONY_SERVICE);


final String tmDevice, tmSerial, androidId;


tmDevice = "" + tm.getDeviceId();
tmSerial = "" + tm.getSimSerialNumber();
androidId = "" + android.provider.Settings.Secure.getString(getContentResolver(), android.provider.Settings.Secure.ANDROID_ID);


UUID deviceUuid = new UUID(androidId.hashCode(), ((long)tmDevice.hashCode() << 32) | tmSerial.hashCode());
this.deviceID = deviceUuid.toString();

Meine Frage - Erstellt man damit wirklich eine eindeutige ID ? Wenn man zwei identische Telefone hat, sind die UDID in diesem Fall trotzdem unterschiedlich ?

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

07.08.2014, 20:24:07 via Website

Um deine Frage zu beantworten:
Ja du bekommst unterschiedliche IDs, da:
1. Die device ID [tmDevice und tmSerial] bei jedem Phone unterschiedlich sind, egal ob baugleich oder gleiches Modell.
2. Du fragst die Sim Serial ab, diese kann wohl kaum in 2 Geräten gleich sein (außer bei ständigem Wechsel)

Zudem sind UUIDs ja unique IDs (http://www.javapractices.com/topic/TopicAction.do?Id=56) also sollte das gerät eindeutig Identifizierbar sein.
Falls du dir da doch nicht sicher bist, hänge noch die IMEI oder Android Version|Build Nummer etc dran.
Daraus dann eine UUID erstellen und dann passt das.
Nur Achtung, manche Faktoren (BuildNummer etc.) können sich ändern, also dies mit Berücksichtigen.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten