由于 Android 非常重视安全性并试图使新的 android 版本更加安全,因此开发人员越来越难以跟上新的安全功能并找到旧的替代方法来使他们的应用与旧功能兼容。
这个问题是关于新 Android 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 号码。根据安卓文档
apps must have the READ_PRIVILEGED_PHONE_STATE privileged permission in order to access the device's non-resettable identifiers, which include both IMEI and serial number.
问题是当我们尝试使用
请求运行时权限时 android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE
我的编译器无法识别此权限,并且我在这一行出现错误,但是当我在 list 文件中询问此权限时,它确实识别了此行,但通过警告此权限仅适用于系统应用程序。
我想让我的应用与 Android 10 兼容,并且想要获取 IMEI。如何在不成为设备所有者或配置文件所有者的情况下在 Android 10 中获取 IMEI 号码?
最佳答案
只有设备所有者应用可以读取唯一标识符,或者您的应用必须是具有READ_PRIVILEGED_PHONE_STATE
的系统应用。您不能为普通应用请求此权限。
关于java - Android 10 中没有适用于 Android 开发人员的 IMEI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57993401/