Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在我的android应用程序中获取设备唯一Id?_Android_Telephonymanager - Fatal编程技术网

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

如何在我的android应用程序中获取设备唯一Id?,android,telephonymanager,Android,Telephonymanager,android.telephony.TelephonyManager.getDeviceId()在迁移到API级别29(android 10)后不工作,因为它抛出了SecurityException。 请任何人都可以帮助我获得唯一的设备id。根据Android 10的最新版本,对不可重置设备标识符的限制。 PPS必须具有读取特权手机状态的特权权限,才能访问设备的不可重置标识符,其中包括IMEI和序列号 “读取权限\u电话\u状态”仅可由最佳做法访问,建议您“避免使用硬件标识符”。对于唯一标识符。

android.telephony.TelephonyManager.getDeviceId()
在迁移到
API级别29
(android 10)后不工作,因为它抛出了
SecurityException

请任何人都可以帮助我获得唯一的设备id。

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

“读取权限\u电话\u状态”
仅可由最佳做法访问,建议您“避免使用硬件标识符”。对于唯一标识符。您可以使用firebase中的实例id,例如
FirebaseInstanceId.getInstance().getId()

或者你也可以用这个

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

使用以下代码:

 public String androidId;

 androidId = String
                .format("%16s", Settings.Secure.getString(getApplicationContext().getContentResolver(), Settings.Secure.ANDROID_ID))
                .replace(' ', '0');
您可以使用下面的选项,该选项是首选选项,且使用该选项的可能性最小 重置


请参阅,从中您可以决定更可取的方法。

getDeviceId不推荐使用。您可以使用此方法获取设备IMEI

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

在Manifeat中设置此权限:

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

如果您的项目包含firebase。
使用-->FirebaseInstanceId.getInstance().getToken()

这是否回答了您的问题?
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
  telephonyManager.getDeviceId();