荣耀50使用HMS Scan Kit 1.3.2.300时App出现崩溃问题求助
崩溃触发原因
- 你使用的
com.huawei.hms:scan:1.3.2.300属于较旧版本,内部集成的Hianalytics埋点逻辑未适配Android 11(API 30)的权限变更:TelephonyManager.getNetworkType()方法从Android 11开始需要READ_PHONE_STATE权限才能调用,旧版本埋点逻辑没有做权限判断,未获取权限时直接调用该方法就会抛出SecurityException异常导致崩溃。 - 崩溃发生在HMS SDK内部的埋点上报线程,和扫码核心功能本身无关,属于SDK内部统计逻辑的适配问题。
对应的解决办法
方案1:升级扫码SDK版本(最推荐)
华为官方在后续版本已经修复了该适配问题,补全了埋点逻辑的权限校验,直接将依赖升级到com.huawei.hms:scan:2.10.0.300及以上稳定版本即可,无需修改其他业务代码。
方案2:提前申请所需权限(适合暂时无法升级SDK的场景)
如果项目因为兼容性原因暂时不能升级SDK,可以通过主动申请权限规避崩溃:
- 在
AndroidManifest.xml中添加权限声明:
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
- 在触发扫码功能之前,动态申请
READ_PHONE_STATE权限,等用户授权通过后再调用扫码相关接口。
方案3:关闭埋点上报(临时规避方案)
如果不想额外申请电话相关权限,可以在Application初始化阶段调用SDK的关闭埋点接口,直接停用触发崩溃的统计逻辑:
com.huawei.hms.mlkit.common.ha.HianalyticsLogProvider.disableLog();
该方案不影响扫码核心功能的正常使用,仅会影响华为后台对扫码功能的使用数据统计。
内容的提问来源于stack exchange,提问作者0405aj
相关产品推荐
相关产品推荐

