针对android 11即使有了读取手机状态权限,使用反射依然获取不到IMEI,关键是还需要一项权限READ_PRIVILEGED_PHONE_STATE,这项权限没有获取途径,只能改系统。

文件路径
alps/frameworks/base/telephony/common/com/android/internal/telephony/TelephonyPermissions.java
checkPrivilegedReadPermissionOrCarrierPrivilegePermission 函数中添加指定app可读取IMEI
if(callingPackage.equals("com.xxx.xxx")){
return true;
}
或者开放权限所有APP都可能读取
if(1==1)
return true;

在Android11中,即使应用拥有读取手机状态的权限,也无法通过反射获取IMEI。问题在于需要额外的READ_PRIVILEGED_PHONE_STATE权限,而这个权限普通应用无法获取。一种解决办法是在源码中针对特定应用开放权限,或者全局开放所有应用的读取权限。具体操作涉及对`TelephonyPermissions.java`文件的修改,如添加特定条件来允许指定应用访问IMEI,或者直接返回true允许所有应用读取。
2653

被折叠的 条评论
为什么被折叠?



