Как получить уникальный идентификатор устройства в моем приложении android? - PullRequest
0 голосов
/ 08 января 2020

android.telephony.TelephonyManager.getDeviceId() не работает после перехода на API level 29 (Android 10), так как выбрасывает SecurityException. Пожалуйста, кто-нибудь может помочь мне получить уникальный идентификатор устройства.

Ответы [ 6 ]

2 голосов
/ 08 января 2020

Согласно последнему выпуску в Android 10, Ограничение на не сбрасываемые идентификаторы устройства. PPS должен иметь привилегированное разрешение READ_PRIVILEGED_PHONE_STATE , чтобы получить доступ к не сбрасываемым идентификаторам устройства, включая IMEI и серийный номер .

"READ_PRIVILEGE_PHONE_STATE" доступен только по рекомендациям. Рекомендуется «избегать использования аппаратных идентификаторов». для уникальных идентификаторов. Вы можете использовать идентификатор экземпляра из firebase, например, FirebaseInstanceId.getInstance().getId();.

Или вы можете go с этим также,

String deviceId = android.provider.Settings.Secure.getString(
                    context.getContentResolver(), android.provider.Settings.Secure.ANDROID_ID);
0 голосов
/ 08 января 2020

Если ваш проект содержит FireBase. используйте это -> FirebaseInstanceId.getInstance (). getToken ()

0 голосов
/ 08 января 2020

установите это разрешение в manifeast:

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

Теперь используйте это, чтобы получить уникальный номер:

TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
  telephonyManager.getDeviceId();
0 голосов
/ 08 января 2020

getDeviceId устарел, вы можете использовать этот метод для получения IMEI устройства

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        IMEINumber = telephonyMgr.getImei();
    } else {
        IMEINumber = telephonyMgr.getDeviceId();
    }
0 голосов
/ 08 января 2020

Вы можете использовать ниже, который является предпочтительным, который имеет наименьшие шансы сброса.

private String android_id = Secure.getString(getContext().getContentResolver(),
                                                        Secure.ANDROID_ID); 

Пожалуйста, обратитесь ЭТО , из которого вы можете выбрать предпочтительный .

0 голосов
/ 08 января 2020

Используйте следующий код:

 public String androidId;

 androidId = String
                .format("%16s", Settings.Secure.getString(getApplicationContext().getContentResolver(), Settings.Secure.ANDROID_ID))
                .replace(' ', '0');
...