如何在我的Android应用程序中获取设备唯一ID?

问题描述 投票:0回答:5

[android.telephony.TelephonyManager.getDeviceId()在迁移到API level 29(Android 10)后不起作用,因为它抛出了SecurityException。请任何人都可以帮我获得唯一的设备ID。

android telephonymanager
5个回答
1
投票

根据Android 10中的最新版本,对不可重置的设备标识符的限制。PPS必须具有READ_PRIVILEGED_PHONE_STATE特权,才能访问设备的不可重置标识符,其中包括IMEI序列号

"READ_PRIVILEGE_PHONE_STATE"仅可通过以下方式访问。最佳实践建议您应“避免使用硬件标识符”。唯一标识符。您可以使用Firebase中的实例ID,例如FirebaseInstanceId.getInstance().getId();

或者您也可以使用它,

String deviceId = android.provider.Settings.Secure.getString(
                    context.getContentResolver(), android.provider.Settings.Secure.ANDROID_ID);

0
投票

使用下面的代码:

 public String androidId;

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

0
投票

您可以在下面使用具有较小机会的首选重置。

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

请参考THIS,您可以从中确定优先选项。


0
投票

不赞成使用getDeviceId,您可以使用此方法获取设备的IMEI

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        IMEINumber = telephonyMgr.getImei();
    } else {
        IMEINumber = telephonyMgr.getDeviceId();
    }

0
投票

在清单中设置此权限:

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

现在使用它来获得唯一的编号:

TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
  telephonyManager.getDeviceId();
© www.soinside.com 2019 - 2024. All rights reserved.