使用imei_plugin获取IMEI每次返回不同编码的原因咨询
问题产生原因
- 系统权限封禁是根本诱因:Android 10(API等级29)及以上版本、iOS 14及以上版本,已经从系统层面完全禁止普通第三方应用读取IMEI、MEID这类不可重置的硬件唯一标识。普通应用即便主动申请
READ_PHONE_STATE权限,调用系统原生的IMEI查询接口也会直接抛出安全异常,不存在任何绕过途径获取真实值。只有预装在系统分区、持有系统平台签名、或是进入运营商特殊白名单的应用,才具备读取真实IMEI的权限,常规上架公共应用市场的App达不到对应的权限等级。 - 插件兜底逻辑直接返回随机值:调用的
imei_plugin做了异常吞掉的兼容处理,当检测到系统限制导致IMEI读取失败、接口抛出异常时,不会把异常透传给上层业务代码,而是自动生成一个随机UUID作为兜底结果返回。该插件的兜底UUID默认没有做本地持久化存储,每次调用相关接口都会重新生成新的随机串,拿到的带横杠的36位字符串就是标准UUID格式,和真实IMEI的15位纯数字格式有明显区别,完全不是设备的真实硬件标识。 - 实际返回结果完全匹配上述场景:
56f29767-c31c-45f9-95e9-dbacf714c417
1755d2f9-5640-4297-b57f-fa0fdd1434b5
这两个值都是标准格式的随机UUID,不存在和设备硬件绑定的关系,每次调用生成新值属于该插件在无权限场景下的预期表现,不是调用代码写错导致的问题。
内容的提问来源于stack exchange,提问作者Ali Rahmani
相关产品推荐
相关产品推荐

