#android #telephony
#Android #телефония
Вопрос:
я разрабатываю приложение, в котором мне просто нужен IMIE номер устройства…
Я пытался:
telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
imie = telephonyManager.getDeviceId();
В самом простом:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
Позвольте мне сказать, если это требует каких-либо других действий??
заранее спасибо.
Комментарии:
1. Вы используете эмулятор и запускаете это приложение на эмуляторе ?..
2. Вы тестируете на эмуляторе? На эмуляторе это даст нулевой указатель.
Ответ №1:
Я думаю, вы все делаете правильно, но, согласно блогу разработчиков Android:
Мы видели несколько экземпляров производственных телефонов, для которых реализация дает ошибки и возвращает мусор, например нули или звездочки.
Кроме того, это, вероятно, не будет работать на эмуляторе.
Комментарии:
1. до того, как однажды он выдаст мне «000000000» вот так
Ответ №2:
Это не номер IMIE для устройства, но если вам просто нужен идентификатор устройства, вы также можете попробовать Build.SERIAL
. Например getDeviceId()
, значение не всегда может быть уникальным или доступным, но это еще один вариант, который можно попробовать, когда первый метод завершается неудачей.
Ответ №3:
следующее может не работать должным образом на эмуляторе..
TelephonyManager TelephonyMgr = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
String szImei = TelephonyMgr.getDeviceId(); // Requires READ_PHONE_STATE
Теперь иногда требуется получить уникальный номер с нетелефонного устройства (например, планшета), в то время как мы можем создать псевдоуникальный идентификатор, который работает на всех устройствах Android, который дает уникальный номер, такой как IMIE. Идентификатор, вычисленный таким образом, не будет уникальным: можно найти два устройства с одинаковым идентификатором (на основе одного и того же аппаратного обеспечения и образа ПЗУ), но шансы в реальных приложениях ничтожно малы. Для этой цели вы можете использовать класс Build:
String PUID = Build.BOARD.length() Build.BRAND.length()
Build.CPU_ABI.length() Build.DEVICE.length()
Build.DISPLAY.length() Build.HOST.length()
Build.ID.length() Build.MANUFACTURER.length()
Build.MODEL.length() Build.PRODUCT.length()
Build.TAGS.length() Build.TYPE.length()
Build.USER.length() ;
PUID вернет 13-значный номер, и мы добавляем еще два впереди (35), чтобы иметь идентификатор того же размера, что и IMEI (15 цифр).).
PUID = "35" PUID;
и замечательно, что нам не нужно добавлять разрешение READ_PHONE_STATE, используя приведенный выше код.
Для получения дополнительной помощи в генерации уникального номера посетите pocket magic.