文档管理中心
|

统一扫码服务

【FAQ】【统一扫码服务】Android12上使用扫码SDK出现崩溃:SecurityException: getDataNetworkTypeForSubscriber

1、问题描述

今天在使用统一扫码SDK时,打开扫码界面之后停留了几秒,然后发现应用出现了崩溃现象,使用的移动设备是华为手机,系统是Android 12的系统,使用的API版本是31,崩溃日志如下图所示:

cke_257.png

详细的报错日志贴在下方:

Html 代码


<div>android.os.Parcel.createExceptionOrNull(Parcel.java:2436) </div><div>android.os.Parcel.createException(Parcel.java:2420) </div><div>android.os.Parcel.readException(Parcel.java:2403) </div><div>android.os.Parcel.readException(Parcel.java:2345) </div><div>com.android.internal.telephony.ITelephony$Stub$Proxy.getNetworkTypeForSubscriber(ITelephony.java:9325) </div><div>android.telephony.TelephonyManager.getNetworkType(TelephonyManager.java:3002) </div><div>android.telephony.TelephonyManager.getNetworkType(TelephonyManager.java:2964) </div><div>com.huawei.hms.mlkit.common.ha.d.b(HianalyticsLogUtils.java:68) </div><div>com.huawei.hms.mlkit.common.ha.HianalyticsLogProvider.logEnd(HianalyticsLogProvider.java:6315) </div><div>com.huawei.hms.ml.camera.g$a.a(HiAnalyticsThread.java:109) </div><div>com.huawei.hms.ml.camera.g$a.handleMessage(HiAnalyticsThread.java:78) </div><div>android.os.Handler.dispatchMessage(Handler.java:109) </div><div>android.os.Looper.loopOnce(Looper.java:206) </div><div>android.os.Looper.loop(Looper.java:296) </div><div>com.huawei.hms.ml.camera.g.run(HiAnalyticsThread.java:51)</div>

2、问题分析

我们首先从日志上整体看下来,并没有涉及到具体的业务部分,根据日志我们可以初步判断这个崩溃应该是触发了系统的某个行为机制导致的,是属于系统行为。

然后结合这个异常信息:SecurityException: getDataNetworkTypeForSubscriber,我们去查找相关的资料看看这个异常究竟是什么就OK了。

getDataNetworkTypeForSubscriber:该异常是获取设备网络类型异常。

造成这个异常的原因是:在Android 11及其以上版本在获取设备网络类型时需要获取READ_PHONE_STATE权限,如果您的工程或者是第三方库没有声明READ_PHONE_STATE权限,由于该权限问题就会造成应用闪退。

3、解决方案

针对以上这个问题,我总结了以下三种解决方案,您可以针对自身的实际情况,选择自己认为最方便的一种方式进行使用,当然,我个人比较推荐的是第三种方案,下面跟着我一起来了解一下这三种方案的具体实现吧!

一、将项目的targetSdkVersion由30降到29及以下版本

即:将项目的目标设备版本调低(临时解决方案,不推荐)

二、升级第三方库

即:由第三方库内部处理该异常,因此需要升级第三方库的版本,但是这种操作需要协调第三方库的开发资源,如果第三方库已经不维护了,那么这种方案也不行了。

三、应用自身申请READ_PHONE_STATE权限

即:在AndroidManifest.xml文件中声明READ_PHONE_STATE权限,然后在代码中动态申请该权限:

cke_5366.png

cke_7142.png

OK,通过上面的方法,我们就可以完美的解决这个问题了!

点赞
1
收藏
1
回复
2
分享
举报
浏览1622 发布于2022-06-24 02:04未知归属地
全部评论
最多点赞
最新发布
最早发布
写回答
新增插入模板功能
一键使用模板,快速填写内容,轻松发帖~
知道了
  • 为了保障您的信息安全,请勿上传您的敏感个人信息(如您的密码等信息)和您的敏感资产信息(如关键源代码、签名私钥、调试安装包、业务日志等信息),且您需自行承担由此产生的信息泄露等安全风险。
  • 如您发布的内容为转载内容,请注明内容来源。

我要发帖子

了解社区公约,与您携手共创和谐专业的开发者社区。