x5webview TbsReaderView首次加载失败

Android应用内预览PDF,WORD,EXCEL等文件,大家伙都尝试了太多开源方法,各种兼容性问题,最后总算是有腾讯X5WebView来帮忙,x5的TbsReaderView的确是解决了兼容性问题,可以加载大部分的文档文件,然后官方文件简陋无比,坑也是太多。本文不赘述内核初始化api和加载文档的api,只阐述一个问题:首次启动app后,打开文档文件时,内核没有加载成功,重启正常。

先说处理结果:

如果QbSdk.initX5Environment在Application里边初始化,那么肯定无法优先拿到Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE这两个权限,那么内核下载和加载都会失效,所以只有在文件存储权限之后加载内核,才会成功。那么问题就很简单了,把初始化x5内核放在请求文件存储权限成功后执行,就可以完美解决

为何大部分人是首次加载失败,杀掉进程重启就可以用:

因为在application里没法请求动态权限,所以文件存储权限大部分应用都会在之后的activity里获取到,所以本次首次启动加载内核时还没有权限,下一次启动时,已经存在权限,那么application里加载内核就是成功的。

总结:

必须在文件存储权限动态请求成功后,再做x5内核的初始化加载

心得:

处理这个问题,经历了几个过程:

1、偶然在一些机型上发现,但后续该机型又恢复正常,此前一直徘徊在兼容性问题上。后来经过多机型多次情景的测试,发现都会出现,就排除机型兼容问题,开始做情景回顾

2、情景回顾过程中,发现首次安装启动无法打开pdf文件,杀死进程重启可以正常使用。推测首次启动内核加载有问题

3、百度google了很多关于内核启动问题的文章,大家都在考虑网络问题,异步问题等,然后第二次启动基本没出现问题,所以觉得和其他人说的那些因素关系不大

4、关键在于解决问题要从代码和日志先走起,可能会少走弯路。在日志里看到了x5的日志,有关于file permission deny的相关提示,考虑到某文件可能无法访问,刚好结合内核加载异常,那很可能就是内核做为文件,无法下载存储或无法读取到内存,于是就增加了文件权限,问题解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值