Почему возвращается Settings.Secure.getString (context.getContentResolver (), Settings.Secure.ANDROID_ID) пустая строка; - PullRequest
1 голос
/ 25 июня 2019

Я использую

Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);

но значение возврата пусто.

Есть идеи?

Спасибо

Ответы [ 2 ]

1 голос
/ 25 июня 2019

public static String getDeviceID (Context Ctx) {

    String android_id = Secure.getString(Ctx.getContentResolver(),
            Secure.ANDROID_ID);
    return android_id;
}

public static String getImeiNumber(Context Ctx) {
    final TelephonyManager telephonyManager = (TelephonyManager) Ctx.getSystemService(Context.TELEPHONY_SERVICE);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        //getDeviceId() is Deprecated so for android O we can use getImei() method
        return telephonyManager.getImei();
    } else {
        return CommonUtils.getDeviceID(Ctx);
    }

}
1 голос
/ 25 июня 2019

Вы используете эмулятор?Эмуляторы возвращают нулевое / пустое значение для этого системного свойства.

Также интересно отметить некоторые вещи, которые Android / Google предупреждает об использовании ANDROID_ID здесь

ANDROID_IDкажется хорошим выбором для уникального идентификатора устройства.Есть недостатки: во-первых, это не на 100% надежно в выпусках Android до 2.2 («Froyo»).Кроме того, в популярном телефоне от одного крупного производителя была обнаружена, по крайней мере, одна широко распространенная ошибка, в которой каждый экземпляр имеет одинаковый ANDROID_ID.

Также обратите внимание на это предупреждение ,может иметь значение, если ваше приложение предназначено для Android Oreo или выше

Примечание. Для приложений, которые были установлены до обновления устройства до версии Android 8.0 (уровень API 26) или выше, значениеANDROID_ID изменяется, если приложение удаляется, а затем переустанавливается после OTA.Чтобы сохранить значения при удалении после OTA до Android 8.0 или выше, разработчики могут использовать Key / Value Backup.

...