Странный вопрос получения IMEI-номера устройства - PullRequest
0 голосов
/ 03 февраля 2012

я использую следующий код в Android, чтобы получить номер IMEI телефона

TelephonyManager telephonyManager = (TelephonyManager)getSystemService(this.TELEPHONY_SERVICE);
        String imei = telephonyManager.getDeviceId().toString();

Я проверял это на многих телефонах

1) Samsung Ace (фройо) 2) Galaxy S 3) Galaxy S2 4) Samsung Geo (имбирный хлеб)

отлично работает и дает номер IMEI

но при выполнении того же кода на следующем устройстве я ничего не получаю: (

Android Pantech

Кто-нибудь подскажет мне, в чем может быть проблема, или если я использую Device_ID для уникальной идентификации устройства Android, это будет работать для всех устройств?

и еще одна вещь, которую я прочитал на форуме, иногда она пуста, и лишь немногие известные устройства дают одинаковый Device_ID

Кто-нибудь пролил свет на то, каков наилучший способ уникальной идентификации устройства, и этот фрагмент кода должен работать на всех устройствах?

любая помощь будет оценена.

Ответы [ 3 ]

1 голос
/ 03 февраля 2012

Кто-нибудь пролил свет на то, каков наилучший способ уникальной идентификации устройства, и этот фрагмент кода должен работать на всех устройствах?

К сожалению, нет 100% идеального способа идентифицировать устройство Android. Это потому, что Google не предоставляет надежный способ для этого. Вместо этого он рекомендует отслеживать установки приложений (по сравнению с устройствами отслеживания). Вот хороший разговор по этому поводу: Определение установок приложения .

1 голос
/ 03 февраля 2012

устройств, которые не имеют сим-карт, не имеют номеров IMEI. вместо этого вы можете прочитать WIFI-MAC-адрес (при условии, что на каждом устройстве Android будет WIFI)

0 голосов
/ 04 июля 2014

Я создал логику для получения уникальной стоимости всего устройства в моей идее.Пожалуйста, посмотрите на это и исправьте меня, если это не удастся.И я протестировал на 10-20 устройствах и попытался установить один и тот же rom. Я получил уникальное значение, и после перепрошивки нового rom тоже самое значение.Ниже приведен метод получения уникального значения:

public static String getDeviceId(Context context) {

    final TelephonyManager tm = (TelephonyManager)     context.getSystemService(Context.TELEPHONY_SERVICE);

    final String tmDevice, tmSerial, androidId;
    tmDevice = "" + tm.getDeviceId();
    tmSerial = "" + tm.getSimSerialNumber();
    androidId = ""
            + android.provider.Settings.Secure.getString(context.getContentResolver(), android.provider.Settings.Secure.ANDROID_ID);

    UUID deviceUuid = new UUID(androidId.hashCode(), ((long) tmDevice.hashCode() << 32) | tmSerial.hashCode());
    String deviceId = deviceUuid.toString();
    return deviceId;

/*Below line fails on android 4.4 devices sometime so i made the above lines*/
 // return Secure.getString(activity.getContentResolver(), Secure.ANDROID_ID);
}
...