Расхождение уникального идентификатора телефона - PullRequest
0 голосов
/ 04 апреля 2011

Некоторое время назад я искал способ уникальной идентификации устройства, на котором запущено мое приложение.Я нашел следующий алгоритм:

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

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

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

Может кто-нибудь объяснить мне, почему это иногда дает мне разные результаты на одном устройстве, и что я могу сделать, чтобы исправить это?

Ответы [ 2 ]

0 голосов
/ 12 апреля 2011

Advantej и Ollie C оба опубликовали ответ на этот вопрос.Посмотрите на следующую страницу:

http://android -developers.blogspot.com / 2011/03 / идентификации-app-Installation.html

0 голосов
/ 04 апреля 2011

Я ожидаю, что проблема связана с getSimSerialNumber (), так как он получает серийный номер для одной конкретной SIM-карты, поэтому, если владелец телефона меняет SIM-карту (например, путем перемещения сети), метод возвращает другой идентификатор. SIM-карта уникальна, но каждое устройство может использовать разные SIM-карты в разное время.

...