在Android 11及以上版本中,由于安全性增强,使用getSerial()方法已经被废弃,无法获取设备序列号。推荐使用以下两种方法获取设备序列号:
1.通过Build.getSerial()方法获取设备序列号,在Android 11及以上版本中,需要拥有READ_PHONE_STATE权限:
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.Q) {
if (checkSelfPermission(Manifest.permission.READ_PHONE_STATE)
== PackageManager.PERMISSION_GRANTED) {
String deviceSerial = Build.getSerial();
}
} else {
String deviceSerial = Build.SERIAL;
}
2.通过Settings.Secure.ANDROID_ID获取设备ID,这是设备的32位十六进制编码,但是在恢复出厂设置或者root后会变更:
String deviceID = Settings.Secure.getString(getContentResolver(),
Settings.Secure.ANDROID_ID);
需要在AndroidManifest.xml文件中添加以下权限: