- Уникальный идентификатор Android-устройства
- ОТВЕТЫ
- Ответ 1
- Ответ 2
- Ответ 3
- Ответ 4
- Ответ 5
- Ответ 6
- Ответ 7
- Android device ID
- Русские Блоги
- Уникальная идентификация Android-устройства
- Предисловие
- Разница между IMEI, MEID, ESN, IMSI, android_id
- Получите анализ уникальной идентификации Android
- 1. DEVICE_ID, разные мобильные устройства возвращают IMEI, MEID или ESN код
- 2. MAC-адрес
- 3.ANDROID_ID
- 4. серийный номер
- 5. ID установки
- Фактическое использование идентификаторов
- 1. Отслеживайте использование оборудования пользователем на уровне
- 2. Отслеживание оборудования на аппаратном уровне.
- подводить итоги
Уникальный идентификатор Android-устройства
Мне нужен уникальный идентификатор устройства Android. Я пробовал его со следующим кодом
Однако я знаю, что это работает только для телефонов.
Что делать, если мое приложение работает на ноутбуке, нетбуке или другом устройстве? Как получить уникальный идентификатор в этом случае?
ОТВЕТЫ
Ответ 1
Посмотрите на константу ANDROID_ID в android.provider.Secure.Settings , чтобы узнать, помогает ли это.
Я добавляю несколько полезных ссылок из официальных документов;
Ответ 2
На телефоне Android есть три типа идентификаторов.
Идентификатор Android Это 64-разрядная шестнадцатеричная строка, которая генерируется при первой загрузке устройства. Как правило, он не будет изменен, если не будет factory reset.
Ответ 3
Это не будет работать для всех устройств.
Некоторые из устройств Android имеют проблемы. Некоторые устройства возвращают значение null, когда мы пытаемся получить идентификатор устройства. Единственный способ решить эту проблему — сделать pseudodeviceID, который должен быть создан самим. Эта функция создаст уникальное устройство ID для вас. Вы можете вносить изменения в эту функцию по мере необходимости. Я слишком много боролся за решение этой проблемы.
Ответ 4
Извините, что ударил старый поток, но эта проблема дает мне головную боль, я нашел хорошую статью для кого-то, чтобы читать, и это очень помогает мне.
Иногда во время разработки приложений Android требуется уникальный идентификатор смартфона на базе Android. Это необходимо в тех случаях, когда пользователь хочет отслеживать уникальные установки устройства в приложении.
Это также полезно в тех случаях, когда разработчик Android хочет отправлять Push-сообщения только нескольким конкретным устройствам. Поэтому здесь необходимо иметь UDID для каждого устройства.
В Android существует много альтернатив UDID устройства. Некоторые из методов получения UDID в приложении android перечислены ниже с его преимуществами и недостатками и любыми необходимыми разрешениями для получения идентификатора устройства.
- IMEI: (Международная идентификация мобильного оборудования)
- Идентификатор Android
- Строка MAC-адреса WLAN
- Строка адреса Bluetooth
1) IMEI: (Международная идентификация мобильного оборудования)
Номер IMEI — очень хороший и первичный источник для получения идентификатора устройства. Он уникален для каждого устройства и зависит от устройства. Таким образом, он также уникален для каждого устройства и является постоянным до срока службы устройства.
Фрагмент кода для получения IMEI устройства приведен ниже:
Для этого вашему приложению потребуется разрешение «android.permission.READ_PHONE_STATE», указанное в файле манифеста.
Преимущества использования IMEI в качестве идентификатора устройства:
IMEI уникален для каждого устройства. Он остается уникальным для устройства, даже если приложение переустановлено или если устройство коренится или factory reset.
Недостатки использования IMEI в качестве идентификатора устройства:
IMEI зависит от слота Simcard устройства, поэтому невозможно получить IMEI для устройств, которые не используют SIM-карту. В Dual sim устройствах мы получаем 2 разных IMEI для одного и того же устройства, так как у него есть 2 слота для simcard.
2) Идентификатор Android
Android_ID — это уникальный 64-разрядный номер, который генерируется и сохраняется при первом загрузке устройства. Android_ID уничтожается, когда устройство factory reset, и новый генерируется.
Код для получения Android_ID показан ниже,
Преимущества использования Android_ID как идентификатора устройства:
Это уникальный идентификатор для всех типов устройств (смартфонов и планшетов). Нет необходимости в каких-либо разрешениях.
Он останется уникальным во всех устройствах и работает на телефонах без слота Simcard.
Недостатки использования Android_ID в качестве идентификатора устройства:
Если версия ОС Android обновляется пользователем, это может измениться. Идентификатор изменяется, если устройство коренится или factory reset выполняется на устройстве. Также существует известная проблема с китайским производителем Android-устройства, что некоторые устройства имеют тот же Android_ID.
3) Строка MAC-адреса WLAN
Мы можем получить уникальный идентификатор для телефонов android, используя MAC-адрес WLAN. MAC-адрес уникален для всех устройств и работает для всех видов устройств.
Фрагмент кода для получения MAC-адреса WLAN для устройства приведен ниже:
Для вашего приложения потребуется разрешение «android.permission.ACCESS_WIFI_STATE», указанное в файле манифеста.
Преимущества использования MAC-адреса WLAN в качестве идентификатора устройства:
Это уникальный идентификатор для всех типов устройств (смартфонов и планшетов). Он остается уникальным, если приложение переустановлено.
Недостатки использования MAC-адреса WLAN в качестве идентификатора устройства:
Если устройство не имеет wifi-оборудования, тогда вы получаете нулевой MAC-адрес, но обычно видно, что большинство устройств Android имеют wifi-аппаратное обеспечение, и на рынке почти нет устройств без оборудования Wi-Fi.
4) Строка адреса Bluetooth
Мы также можем получить уникальный идентификатор для телефонов Android с помощью устройства Bluetooth. Адрес устройства Bluetooth уникален для каждого устройства, имеющего оборудование Bluetooth.
Фрагмент кода для получения адреса устройства Bluetooth приведен ниже,
Чтобы получить вышеуказанный код, вашему приложению требуется разрешение «android.permission.BLUETOOTH», указанное в файле манифеста.
Преимущества использования адреса устройства Bluetooth в качестве идентификатора устройства: Это уникальный идентификатор для всех типов устройств (смартфонов и планшетов). Как правило, на всех устройствах имеется одно Bluetooth-оборудование, и оно не изменяется.
Недостатки использования адреса устройства Bluetooth в качестве идентификатора устройства: Если устройство не имеет Bluetooth-оборудования, тогда вы получите нуль.
Как мне кажется, это несколько из лучших способов получить уникальный идентификатор устройства для смартфона Android и его плюсы и минусы использования. Теперь вам решать, какой метод использовать на основе требований к разработке приложений для Android.
Если есть какие-либо другие методы для получения UDID, и это покрывает недостатки вышеописанных методов, я бы с удовольствием исследовал их в своем приложении для Android. Pl. обмениваться данными в поле комментариев, а также при любых предложениях или запросах.
Ответ 5
Подробные инструкции о том, как получить уникальный идентификатор для каждого Android-устройства, на котором установлено ваше приложение, см. в этом официальном блоге разработчиков Android:
Кажется, что лучше всего создать для себя один из них при установке, а затем прочитать его при повторном запуске приложения.
Я лично считаю это приемлемым, но не идеальным. Ни один идентификатор, предоставляемый Android, работает во всех случаях, поскольку большинство из них зависит от состояний радиотелефона (включение/выключение Wi-Fi, включение/выключение соты, включение/выключение Bluetooth). Другие, такие как Settings.Secure.ANDROID_ID, должны быть реализованы производителем и не гарантированы быть уникальными.
Ниже приведен пример записи данных в файл INSTALLATION, который будет храниться вместе с любыми другими данными, которые приложение сохраняет локально.
Ответ 6
Адрес управления доступом к среде передачи (MAC адрес) является уникальным идентификатором назначенные сетевым интерфейсам
У любого устройства, подключенного к сети, гарантированно есть MAC-адрес, и вы можете найти его на Android, выбрав «Настройки» > «О телефоне» > «Состояние».
Вы можете получить адрес Bluetooth Bluetooth с помощью API Bluetooth.
Ответ 7
Я не могу писать комментарии сейчас, поэтому пишу здесь.
Вы можете получить MAC-адрес, если сетевое устройство (Bluetooth и т.д.) включено в системе (включено). Но устройство может иметь bluetooth или wi-fi и т.д. Или ничего
Вы можете написать свой собственный уникальный генератор Id (например, с 20 номерами или символами)
Источник
Android device ID
Бывает возникает необходимость получить какой-то уникальный идентификатор для Android телефона. Какие могут быть варианты? В данном топике опишу семь известных мне способов сделать это. (Точее, способов будет шесть, а вот седьмой как вариант – это комбинация всех шести предыдущих). Итак.
Android IMEI.
Думаю, Вам известно, что каждый, даже самый старый черно-белый телефон, имеет свой уникальный идентификатор – IMEI (International Mobile Equipment Identity), применяемый по большей степени в GSM сетях. Он устанавливается производителем телефона и хранится в прошивке. Можем его смело использовать в качестве требуемого идентификатора:
TelephonyManager telephonyManager = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
String devicIMEI = telephonyManager.getDeviceId();
Для эмулятора всегда возвращается «000000000000000″, для реального телефона что-то наподобие «351256985671943″
Phone Number
Следующим образом можем получить номер телефона:
String phoneNumber = telephonyManager.getLine1Number();
Вернет строку вида: +ХХХХХХХХХХХХ (Х = [0..9])
Примечание: предыдущие два примера требуют указания в манифесте следующего пермишина:
android.permission.READ_PHONE_STATE
Псевдо-уникальный ID
Не все андроид-девайсы могут быть оснащены GSM-модулем, скажем, зато у всех у них есть производитель, который «слепил» устройство из всяких железок. Вот какраз информация об этих железках, собранная вместе, и может послужить в качестве уникального идентификатора (правда возможны и повторения). В некоторых случаях может пригодиться. Сконструируем из этих данных что-то похожее на IMEI телефона (15 знаков):
String pseudoID = «35″ +
Build.BOARD.length()%10 + Build.BRAND.length()%10 +
Build.CPU_ABI.length()%10 + Build.DEVICE.length()%10 +
Build.DISPLAY.length()%10 + Build.HOST.length()%10 +
Build.ID.length()%10 + Build.MANUFACTURER.length()%10 +
Build.MODEL.length()%10 + Build.PRODUCT.length()%10 +
Build.TAGS.length()%10 + Build.TYPE.length()%10 +
Build.USER.length()%10;
Android ID
Это еще один ID. Считается ненадежным, так как может в некоторых случаях быть и null. Обратимся к документации:
A 64-bit number (as a hex string) that is randomly generated on the device’s first boot and should remain constant for the lifetime of the device.
Ничего, пригодится:
String androidID = Secure.getString(getContentResolver(), Secure.ANDROID_ID);
Wi-Fi Mac адрес
В качестве уникального Device Id можно использовать Mac Wi-Fi-адаптера. Для его получения необходимо в манифесте установить права: android.permission.ACCESS_WIFI_STATE
WifiManager wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);
String wifiMac = wifiManager.getConnectionInfo().getMacAddress();
Androif BlueTooth ID
По аналогии с Wi-Fi мак-адресом, может взять и голубозубый мак. (требуются права android.permission.BLUETOOTH и, возможно, включенный адаптер)
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
String blueToothMac = bluetoothAdapter.getAddress();
Номер 7
Вариация всех предыдущих методов. Самый простой вариант – получить все вышеописанные идентификаторы, сложить в одну строку и взять md5 хеш от этой строки.
Источник
Русские Блоги
Уникальная идентификация Android-устройства
Предисловие
Недавно я хотел узнать о получении уникальной идентификации устройства, и тут у меня заболела голова. тогда. . . . . .
Подведем итоги сегодня.
Разница между IMEI, MEID, ESN, IMSI, android_id
Давайте сначала определим несколько концепций, которые способствуют следующему развитию:
1.IMEI
- (IMEI: международный идентификационный номер мобильного оборудования) — это знак, который определяет мобильное оборудование. Он хранится в мобильном оборудовании и может использоваться для отслеживания украденного или недействительного мобильного оборудования. Состав IMEI показан на рисунке ниже. Наберите «* # 06 #», чтобы найти его.
- Общая длина составляет 15 цифр, и для каждой цифры используются только 0–9 цифр. Среди них TAC представляет собой код сборки модели, присвоенный Европейским центром стандартизации моделей; FAC представляет номер производителя сборки; SNR — серийный номер продукта, используемый для различения каждого мобильного устройства в одном TAC и FAC; SP — резервный код.
IMEI состоит из 15 цифр, а его состав:
1. Первые 6 цифр (TAC) — это «номер утверждения модели», который обычно представляет модель.
2. Следующие две цифры (FAC) — это «окончательный номер сборки», который обычно обозначает место производства.
3. Следующие 6 цифр (SNR) — это «серийный номер», который обычно представляет собой производственный порядковый номер.
4. Последняя цифра (SP) обычно «0», это контрольный код, который в настоящее время зарезервирован.
Роль строкового кода:
IMEI: TAC + FAC + SNR + SP. IMEI (International Mobile Equipment Identity) — это аббревиатура от International Mobile Equipment Identity. International Mobile Equipment Identity — это «электронный серийный номер», состоящий из 15 цифр. Он соответствует каждому мобильному телефону один за другим, а код является всемирным. только. После сборки каждому мобильному телефону будет присвоен глобально уникальный набор номеров, который будет записан производителем от производства до доставки.
Когда мобильный телефон украден, если вы знаете код IEMI, вы можете заблокировать мобильный телефон через оператора мобильной связи, то есть узнать номер мобильного телефона после кражи, отключить функцию вызова мобильного телефона и узнать номер мобильного телефона. должность. В обычных условиях поставщики не принимают запросы от частных лиц или организаций на обнаружение или блокировку мобильных телефонов. В Китае соответствующие департаменты национальной безопасности будут в определенной степени управлять серийными номерами мобильных телефонов.
- Идентификатор мобильного оборудования (MEID) — единственный 56-битный идентификационный номер мобильного терминала в мире. Идентификационный номер будет записан в терминал и не может быть изменен. Может использоваться для идентификации и отслеживания мобильных устройств. Поскольку сегмент номера ESN является ограниченным ресурсом, он в основном исчерпан, и может быть небольшое количество повторно используемых сегментов номера, поэтому 56-битный сегмент номера MEID был разработан для замены 32-битного сегмента номера ESN. MEID в основном используется для мобильных телефонов CDMA.
- Из-за увеличения числа мобильных устройств CDMA исходного 8-битного ESN недостаточно, поэтому получился MEID 56 бит = (56/4 = 14 байтов). Современные мобильные телефоны CDMA обычно имеют как ESN / MEID. MEID также выражается в шестнадцатеричном формате.
MEID идентифицируется 14 шестнадцатеричными цифрами, а 15-я цифра является контрольной цифрой, которая не участвует в эфирной передаче.
RR: диапазон A0-FF, выделенный официальным лицом
XXXXXX: диапазон 000000-FFFFFF, выделенный официальным
ZZZZZZ: диапазон 000000-FFFFFF, серийный номер, присвоенный каждому терминалу производителем.
C / CD: 0-F, проверьте код
Номера IMEI и MEID в мобильных телефонах похожи на идентификационные карты в нашей жизни. Они являются важной основой для идентификации мобильных телефонов. Например, мобильные телефоны с ложными номерами, операторы сети могут в любой момент отключить этот мобильный телефон в сети с помощью технических средств. Это принесет огромные риски пользователям мобильных телефонов. На номера IMEI или MEID, используемые в мобильных телефонах, можно по закону подать заявку через соответствующие агентства, такие как Moore Laboratories.
Кроме того, приложение MEID требует оплаты. Текущая цена составляет 8000 долларов США за каждый MEID в диапазоне 1M и дополнительные 8000 долларов США за каждый дополнительный номер MEID в диапазоне 1M.
Номера MEID назначаются и управляются Ассоциацией телекоммуникационной индустрии (TIA).
Проверка номера MEID, в настоящее время не существует универсального метода, который устанавливается каждым производителем мобильных телефонов. Вы можете проверить номер MEID, проверив инструкцию к телефону.
- Электронный серийный номер в системе CDMA является уникальным идентификатором для идентификации физического аппаратного устройства. Другими словами, каждый мобильный телефон использует этот уникальный идентификатор для идентификации, как и личная идентификационная карта. ESN в CDMA соответствует IMEI в сети GSM. ESN имеет 32 бита,
- То есть 32/4 = 8 байтов. С увеличением количества мобильных устройств CDMA ESN становится недостаточно, поэтому вводится MEID с большим количеством цифр. ESN выражается в шестнадцатеричном формате.
- Международный идентификационный номер мобильного абонента (IMSI: International Mobile Subscriber Identification Number) — это знак, который различает мобильных пользователей. Он хранится на SIM-карте и может использоваться для отличия эффективной информации от мобильных пользователей.
- Общая длина IMSI не превышает 15 цифр, также используются числа от 0 до 9. Среди них MCC — это код страны мобильного пользователя, который занимает 3 цифры. MCC Китая определяет его как 460; MNC — это номер мобильной сети, состоящий из двух цифр, используемый для идентификации сети мобильной связи, к которой принадлежит мобильный пользователь;
- MSIN — это идентификационный код мобильного пользователя, используемый для идентификации мобильных пользователей в сети мобильной связи.
- Уникальный идентификационный код устройства Android
Согласно приведенному выше резюме, соответствующая информация о вашем мобильном телефоне выглядит следующим образом:
meid[99000939335539]
imei1[863254036690765]
imei2[863254036690773]
simSerialNumber [89860117801033225378]
subscriberId [460011691516816]
Это телефоны Huawei:
MEID:A000007F2C4002
IMEI1:866957038217380
IMEI2:866957038364067
PESN:802B5D2A
SN:8BN02179015937
Поскольку мой мобильный телефон поддерживает две SIM-карты, у меня есть два номера imei.
Получите анализ уникальной идентификации Android
1. DEVICE_ID, разные мобильные устройства возвращают IMEI, MEID или ESN код
Это серийный номер, предоставляемый системой Android разработчикам для идентификации мобильных телефонов, и он также является наиболее универсальным среди различных методов.Можно сказать, что почти все устройства могут возвращать этот серийный номер с хорошей уникальностью.
Немобильное устройство: если только устройство с Wi-Fi или музыкальный проигрыватель не имеет аппаратной функции для звонков, такого DEVICE_ID нет.
Разрешение: для получения DEVICE_ID требуется разрешение READ_PHONE_STATE, но если мы его только получаем и не используем другие функции вызова, то это разрешение слишком велико для использования
1.1 Sim Serial Number — уникальный идентификатор SIM-карты мобильного телефона.
код показан ниже:
Примечание. Для устройств CDMA возвращается нулевое значение.
1.2 Некоторые другие значения, которые может получить TelephonyManager
Дополнительные сведения о TelephonyManager см. В этом блоге.Telephonymanager подробно
2. MAC-адрес
MAC-адрес глобально уникален и не может быть сброшен пользователем, а также не изменится после восстановления заводских настроек. Как правило, не рекомендуется использовать MAC-адреса для какой-либо формы идентификации пользователя. Поэтому начиная с Android M,Больше не доступно через сторонние APIMAC-адрес локального устройства (например, WLAN и Bluetooth). [WifiInfo.getMacAddress()] Методы и [BluetoothAdapter.getDefaultAdapter().getAddress()] Метод вернет 02:00:00:00:00:00 。
Есть способы получить MAC-адрес 8.0wifi в Интернете:
Вышеупомянутый метод доступен как для мобильных телефонов Xiaomi Android 8.0, так и для мобильных телефонов Huawei Honor 8.0. Остальные телефоны не тестировал.
заметка:
Чтобы получить MAC-адрес, он должен быть подключен к сети Wi-Fi, иначе соответствующее имя не будет получено.
3.ANDROID_ID
Когда устройство запускается в первый раз, система случайным образом сгенерирует 64-битное число и сохранит его в виде шестнадцатеричной строки. Эта шестнадцатеричная строка — ANDROID_ID. При очистке устройства значение будет Сброс.
можно получить следующим способом:
ANDROID_ID можно использовать как идентификацию устройства, но вам нужно обратить внимание на:
1. Ошибка индивидуальной системы производителя: разные устройства могут генерировать один и тот же ANDROID_ID: 9774d56d682e549c.
2. Ошибка индивидуальной системы производителя: некоторые устройства возвращают null.
3. Различия между устройствами. Для устройств CDMA ANDROID_ID и TelephonyManager.getDeviceId () возвращают одно и то же значение.
4. серийный номер
Серийный номер можно получить с помощью следующего метода для системы Android версии 2.3 и выше, и немобильные устройства также могут получить его через этот интерфейс.
4.1 Некоторые значения, которые можно получить в android.os.Build
Непосредственно по коду:
Ниже приводится соответствующая информация, полученная Huawei Honor 9 и Xiaomi:
Serial_Num: 8BN0217919015937
Manufacturer: HUAWEI
Model: STF-AL00
Brand: HONOR
Device: HWSTF
Ниже представлена соответствующая информация о Mi 6.
Sim_SN: 89860117801033225378
Manufacturer: Xiaomi
Model: MI 6
Brand: Xiaomi
Device: sagit
5. ID установки
Принцип этого метода заключается в генерации идентификатора при первом запуске программы после установки. Этот метод отличается от уникальной идентификации устройства. Различные приложения будут генерировать разные идентификаторы, и одна и та же программа будет отличаться при переустановке. Таким образом, это не уникальный идентификатор устройства, но можно гарантировать, что идентификатор каждого пользователя отличается. Можно сказать, что он используется для идентификации уникального идентификатора каждого приложения (т.е. идентификатора установки), который можно использовать для отслеживания количества установок приложений и т. Д.
Непосредственно загрузите код:
Приведенный выше код также можно реализовать с помощью SharedPreferences:
Фактическое использование идентификаторов
Прежде всего, мы должны сначала выяснить конкретные потребности нашего оборудования для отслеживания. В настоящее время существует не более двух видов спроса:
- 1. Отслеживайте оборудование на уровне цикла использования пользовательского оборудования.
означает рассматривать устройство как новое устройство каждый раз, когда пользователь стирает данные с устройства и восстанавливает заводские настройки. - 2. Отслеживание оборудования на аппаратном уровне.
означает, что устройство следует рассматривать как то же устройство после удаления данных или восстановления заводских настроек.
1. Отслеживайте использование оборудования пользователем на уровне
Теоретически значения Android_ID нам достаточно для выполнения этого требования, но именно из-за недостатков в Android_ID мы не можем напрямую идентифицировать устройство. Здесь мы используем несколько значений, чтобы избежать этих недостатков.
Я рекомендую использовать Android_ID и серийный номер Sim для идентификаторов, связанных с жизненным циклом пользовательского оборудования. Кроме того, можно добавить Device_ID, а идентификатор устройства можно вычислить и сгенерировать с помощью UUID или MD5.
- Реализация UUID:
- Реализация MD5 (алгоритм MD5 см. Ниже):
2. Отслеживание оборудования на аппаратном уровне.
Для отслеживания устройств на аппаратном уровне рекомендуется использовать идентификаторы оборудования, такие как идентификатор устройства (DeviceId), Mac-адрес, серийный номер устройства (SN) или марка устройства, название модели и т. Д. Эти значения вводятся после того, как пользователь удалит данные или восстановит заводские настройки. Это не изменится. Точно так же, чтобы повысить стабильность и устранить дефекты одного идентификатора, мы используем несколько идентификаторов для объединения, а затем вычисляем нужный нам идентификатор устройства с помощью алгоритма UUID или MD5.
- Реализация UUID:
- Реализация MD5 (алгоритм MD5 см. Ниже):
Чтобы дополнить требуемый выше md5:
Важная вещь в реальном бою выше — это мысль.
подводить итоги
Резюме выше, я почти сумасшедший. Эта работа относительно тривиальна, без чувства системы. Свяжите один кусок и соедините вместе. Боже мой! ! !
Источник