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

来源:互联网 发布:产品分析软件 编辑:程序博客网 时间:2024/06/01 07:15

华为手机的那些坑。

把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信息,报了什么错,在控制台上就直接显示出来了。


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

阅读全文
1 0
原创粉丝点击