Как получить IMEI/ESN устройства программно в андроиде?

Для идентификации каждого устройства исключительно, я хотел бы использовать IMEI (или число ESN для устройств CDMA). Как получить доступ к этому программно?

320
задан Jabberwocky 18 May 2015 в 20:21
поделиться

2 ответа

Вы хотите позвонить android.telephonyManager.getDeviceId().

Это вернет любую строку, уникально идентифицирующую устройство (IMEI на GSM, MEID для CDMA).

Для этого нужно следующее разрешение в вашем AndroidManifest.xml:

<пользование-разрешение android:name="android.permission.READ_PHONE_STATE" />

для того, чтобы сделать это.

При этом будьте осторожны. Пользователи не только зададутся вопросом, почему ваше приложение получает доступ к своему телефонному стеку, но и могут столкнуться с трудностями при переносе данных, если пользователь получит новое устройство.

Обновление: Как упоминалось в комментариях ниже, это не является безопасным способом аутентификации пользователей, и вызывает озабоченность по поводу конфиденциальности. Это не рекомендуется. Вместо этого, взгляните на Google+ Login API, если вы хотите реализовать систему входа без трения.

Android Backup API также доступен, если вы просто хотите легкий способ сохранить связку строк, когда пользователь сбрасывает свой телефон (или покупает новое устройство).

.
372
ответ дан 23 November 2019 в 00:58
поделиться

В дополнение к ответу Тревора Джонса, вы можете использовать это следующим образом:

TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
telephonyManager.getDeviceId();

И вы должны добавить следующее разрешение в ваш файл Manifest.xml:

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

В эмуляторе вы, вероятно, получите что-то вроде "00000...". getDeviceId() возвращает NULL, если ID устройства недоступен.

276
ответ дан 23 November 2019 в 00:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: