NullPointerException: Attempt to invoke virtual method 'int com.huawei.lcagent.client.LogCollectMana

华为手机的那些坑。

把app运行到华为手机上,跳转到某个页面时就会闪退。但是在其他的手机上都是运行正常的,包括在安卓7.0的手机上也运行正常。但是一旦在这个6.0的华为手机上就会出现那个bug。查看日志发现是NullPointerException!

日志是这样的:


java.lang.NullPointerException: Attempt to invoke virtual method 'int com.huawei.lcagent.client.LogCollectManager.getUserType()' on a null object reference


详细的可以看看下面截图:



log只是提示了与com.huawei.lcagent.client.LogCollectManager.getUserType()这个有关,很明显是华为系统的原因。但是百度了一下,网上都说是LogCollectManager这个类把日志给隐藏了,导致真正的日志无法显示,把app运行到其他手机上,再看别的手机上打印出的log吧。


但是我的app只有在华为手机上才崩溃,在其他的手机上都没有问题啊。怎么办。一步步分析吧。从头把思路捋一捋。


我的app是跳转到MainActivity时才崩溃的,所以崩溃的原因应该在MainActivity里。

后来发现我的MainActivity里有一段代码涉及到了安卓6.0!



这段代码的意思就是当检测到系统版本是安卓6.0及其以上版本时。就检查自己是不是在系统的电量白名单里,如果不是就调用意图使用户同意本app加入到白名单中。

我把这段代码注释掉就好了。重新运行后,再次进入MainActivity也不会崩溃了。


另外,我发现华为手机会过滤掉一些log信息,只显示NullPointException,让你看不出来到底出了什么bug导致app崩溃了。出现这种情况,大家可以换一台手机试试。把bug复现一下。其他品牌的手机不会像华为这样过滤log信息,报了什么错,在控制台上就直接显示出来了。


还有一种办法就是在拨号界面输入*#*#2846579#*#*
进入工程菜单---后台设置----LOG设置---LOG开关 把几个复选框都勾选,这样也可以显示log。

如果本文对你有帮助的话,麻烦在左侧点个赞,谢谢支持。

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值