由于安卓非常注重安全,并且试图使新的安卓版本更加安全,因此对于开发者来说,随着新的安全特性的出现以及寻找旧方法的替代方案,让他们的应用程序兼容旧特性变得越来越困难。
这个问题是关于新版安卓10中的IMEI! 旧方法非常容易通过以下代码获取IMEI号码:
String deviceId = "";
if (Build.VERSION.SDK_INT >= 26) {
if (telMgr.getPhoneType() == TelephonyManager.PHONE_TYPE_CDMA) {
deviceId = telMgr.getMeid();
} else if (telMgr.getPhoneType() == TelephonyManager.PHONE_TYPE_GSM) {
deviceId = telMgr.getImei();
} else {
deviceId = ""; // default!!!
}
} else {
deviceId = telMgr.getDeviceId();
}
在新的Android 10系统中,获取IMEI号码现在已被限制。根据安卓文档:
应用程序必须拥有READ_PRIVILEGED_PHONE_STATE特权权限,才能访问设备的不可重置标识符,包括IMEI和序列号。
问题在于,当我们尝试使用以下代码请求运行时权限时
android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE
我的编译器无法识别这些权限,我在这一行代码上得到了错误提示。但是当我在清单文件中申请这些权限时,它能够识别这行代码,并警告说这些权限仅适用于系统应用。
我希望使我的应用与Android 10兼容,并获取IMEI。如何在Android 10中获取IMEI号码,而不需要成为设备所有者或配置文件所有者?