如何在我的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();