Для идентификации каждого устройства исключительно, я хотел бы использовать IMEI (или число ESN для устройств CDMA). Как получить доступ к этому программно?
Вы хотите позвонить android.telephonyManager.getDeviceId()
.
Это вернет любую строку, уникально идентифицирующую устройство (IMEI на GSM, MEID для CDMA).
Для этого нужно следующее разрешение в вашем AndroidManifest.xml
:
<пользование-разрешение android:name="android.permission.READ_PHONE_STATE" />
для того, чтобы сделать это.
При этом будьте осторожны. Пользователи не только зададутся вопросом, почему ваше приложение получает доступ к своему телефонному стеку, но и могут столкнуться с трудностями при переносе данных, если пользователь получит новое устройство.
Обновление: Как упоминалось в комментариях ниже, это не является безопасным способом аутентификации пользователей, и вызывает озабоченность по поводу конфиденциальности. Это не рекомендуется. Вместо этого, взгляните на Google+ Login API, если вы хотите реализовать систему входа без трения.
Android Backup API также доступен, если вы просто хотите легкий способ сохранить связку строк, когда пользователь сбрасывает свой телефон (или покупает новое устройство).
.В дополнение к ответу Тревора Джонса, вы можете использовать это следующим образом:
TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
telephonyManager.getDeviceId();
И вы должны добавить следующее разрешение в ваш файл Manifest.xml:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
В эмуляторе вы, вероятно, получите что-то вроде "00000...". getDeviceId() возвращает NULL, если ID устройства недоступен.