К сожалению поднять старую нить, но эта проблема дает мне головную боль, я нашел хорошую статью для кого-то читать, и это действительно помогает мне много.
Иногда во время разработки приложений Android требуется уникальный идентификатор смартфона на базе Android. Это необходимо в тех случаях, когда пользователь хочет отслеживать уникальные установки устройства приложения.
Это также полезно в тех случаях, когда разработчик Android хочет отправить Push-сообщения только нескольким конкретным устройствам. Поэтому здесь необходимо иметь UDID для каждого устройства.
В Android существует много альтернатив UDID устройства. Ниже перечислены некоторые из способов получения UDID в приложении android с его преимуществами и недостатками и любыми необходимыми разрешениями для получения идентификатора устройства.
- The IMEI (международный идентификатор мобильного оборудования)
- Андроида ID
- Адресная строка WLAN MAC
- адреса Bluetooth строка
1) IMEI: (International Mobile Идентификация оборудования)
Номер IMEI очень хороший и первичный источник, чтобы получить идентификатор устройства. Он уникален для каждого устройства и зависит от устройства. Таким образом, он также уникален для каждого устройства и является постоянным до срока службы устройства.
фрагмент кода, чтобы получить устройство IMEI, как показано ниже,
TelephonyManager TelephonyMgr = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
String m_deviceId = TelephonyMgr.getDeviceId();
Для этого приложения потребуется разрешение «android.permission.READ_PHONE_STATE», данное в файле манифеста.
Преимущества использования IMEI в качестве устройства ID:
Код IMEI является уникальным для всех и каждого устройства. Он остается уникальным для устройства, даже если приложение переустановлено или устройство укоренено или сброшено с завода.
Недостатки использования IMEI в качестве идентификатора устройства:
IMEI зависит от слота Simcard устройства, так что это не возможно, чтобы получить IMEI для устройств, которые не используют Simcard. В двух SIM-устройствах мы получаем 2 разных IMEI для одного и того же устройства, так как у него есть 2 слота для simcard.
2) Андроид ID
Android_ID представляет собой уникальный 64-битный номер, который генерируется и сохраняется, когда устройство первой загрузки. Идентификатор Android_ID уничтожается, когда устройство сбрасывается с завода и генерируется новый.
код, чтобы получить Android_ID будет показано ниже,
String m_androidId = Secure.getString(getContentResolver(), Secure.ANDROID_ID);
Преимущества использования Android_ID в качестве Device ID:
Это уникальный идентификатор для всех типов устройств (смартфоны и планшеты). Нет необходимости в каких-либо разрешениях.
Он останется уникальным во всех устройствах и работает на телефонах без слота Simcard.
Недостатки использования Android_ID в качестве идентификатора устройства:
Если Android OS версии модернизирован пользователем, то это может переодеться. Идентификатор изменяется, если устройство подключено к корневому устройству или заводской сброс выполняется на устройстве. Также существует известная проблема с китайским производителем Android-устройства, что некоторые устройства имеют тот же Android_ID.
3) Адресная строка WLAN MAC
Мы можем получить уникальный идентификатор для андроид телефонов, используя адрес WLAN MAC также. MAC-адрес уникален для всех устройств и работает для всех типов устройств.
фрагмент кода, чтобы получить WLAN MAC-адрес для устройства, как показано ниже,
WifiManager m_wm = (WifiManager)getSystemService(Context.WIFI_SERVICE);
String m_wlanMacAdd = m_wm.getConnectionInfo().getMacAddress();
Вашего приложение будет требовать разрешений «android.permission.ACCESS_WIFI_STATE», данных в файле манифеста.
Преимущества использования WLAN МАС-адрес в качестве устройства ID:
Это уникальный идентификатор для всех типов устройств (смартфоны и планшеты). Он остается уникальным, если приложение переустановлено.
Недостатки использования WLAN MAC-адрес в качестве идентификатора устройства:
Если устройство не имеет Wi-Fi оборудования, то вы получите нулевой MAC-адрес, но, как правило, видно, что большинство Android устройств имеют Wi-Fi оборудование и есть едва ли мало устройств на рынке без оборудования Wi-Fi.
4) Адресная строка Bluetooth
Мы можем получить уникальный идентификатор для андроид телефонов с помощью устройства Bluetooth также. Адрес устройства Bluetooth уникален для каждого устройства, имеющего оборудование Bluetooth.
фрагмент кода, чтобы получить адрес устройства Bluetooth является, как указано ниже,
BluetoothAdapter m_BluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
String m_bluetoothAdd = m_BluetoothAdapter.getAddress();
Чтобы получить код выше, приложение нуждается в разрешении «android.permission.BLUETOOTH», приведенное в файле манифеста.
Преимущества использования адреса устройства Bluetooth в качестве идентификатора устройства: Это уникальный идентификатор для всех типов устройств (смартфонов и планшетов). Обычно на всех устройствах имеется одно Bluetooth-оборудование, и оно не изменяется.
Недостатки использования адреса устройства Bluetooth в качестве ID устройства: Если устройство не имеет оборудования Bluetooth, вы получаете нуль.
В соответствии с этим, это несколько из лучших способов получить уникальный идентификатор устройства для смартфона Android и его плюсы и минусы его использования. Теперь вам решать, какой метод использовать на основе требований к разработке приложений для Android.
Если есть какие-либо другие методы получения UDID, и это покрывает недостатки вышеуказанных методов, то мне бы очень хотелось изучить их в приложении для Android. Pl. поделитесь с ними в поле комментариев, а также с предложениями или запросами.
Here's the article
@Mudassir: Так что в основном вы хотите что-то, что 'установить в камне', 'жестко', который никогда не будет изменить и на 100% надежнее ??? Intel попробовала ... прочитайте это schneier.com/essay-187.html – Squonk 2010-12-17 08:00:17
@MisterSquonk Я хочу что-то подобное. Мне нравится «в камне». :-) – Mudassir 2010-12-17 08:43:50
@ Мудассир: Хорошо, удачи в том, чтобы найти это, но я был бы удивлен, если вы его найдете. В лучшем случае я буду работать над принципом того, что наименее вероятно будет изменено/взломано или что угодно, чтобы использовать его как основу для чего-то, что является «уникальным», как может быть. После этого попробуйте написать код, чтобы компенсировать любые проблемы на этом пути. – Squonk 2010-12-17 09:00:58