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的相关提示,考虑到某文件可能无法访问,刚好结合内核加载异常,那很可能就是内核做为文件,无法下载存储或无法读取到内存,于是就增加了文件权限,问题解决

x5webview TbsReaderView首次加载失败相关推荐

  1. html 加载pdf文件内容不显示不出来,pdf.js首次加载pdf文件时找不到pdf文件,刷新后才能出现pdf文件...

    前台点击文件学码的定一近,更工广款近,更工广款近,更名后,后台通过openoffice将doc文件转为pdf格式文件,然后存放在服务器tomcat'中,pdf.js首次加载服务器中tomcat中的转化 ...

  2. RequireJS首次加载偶尔失败

    RequireJS首次加载偶尔失败 现象:第一次加载JS文件,首次加载偶尔失败: 原因:require(['jquery', 'operamasks', 'zTree', 'jQueryCookie' ...

  3. glide首次加载图片时,出现图片变形,重复一下就正常

    glide首次加载图片时,出现图片变形问题,重复一下就正常了,这样看着总是很不爽! 简单粗暴的解决办法:将加载的动画去掉,出来的就加载正常了! dontAnimate() 例如:Glide.with( ...

  4. 计算机安全权限不足或配置文件损坏,配置文件加载失败 - Windows Server | Microsoft Docs...

    在桌面设置期间发生错误,并且首次登录 Windows 时桌面位置不可用 09/08/2020 本文内容 本文可帮助解决将 ntuser.dat 或 usrclass.dat 文件定义为只读,或者配置文 ...

  5. 【uniapp】sigmob广告加载失败:-5005、500422没有imei的解决办法(原创可用)

    问题 最近打算将开发的uniapp应用对接uni-ad广告中去,在对接sigmob的时候出现了以下问题:①错误码==-5005==,查询了以下官方文档,发现是说我频繁调用,可是并没有,我是在真机上测试 ...

  6. kotlin Bean加载失败lateinit property has not been initialized

    Application run failed org.springframework.beans.factory.UnsatisfiedDependencyException: Error creat ...

  7. android资源加载失败,Unity2017,打成安卓包之后加载资源失败

    在game.unity的基础上简单改了一下,但是执行SceneLoader.Load("Scene/TestScene/TestScene.unity");的时候会看到加载失败的l ...

  8. Service Worker 图片加载失败处理

    Service Worker 图片加载失败处理 参考文档 git clone https://gitee.com/wjj0720/Service-Worker.git 运行 npm i npm sta ...

  9. mockcpp的so加载失败问题

    mockcpp的so加载失败问题 一.先来看之前已解决的六个so无法加载的问题. 把libmockcpp-ut-TestReturnObjectList.so拿来做例子研究so加载问题. 加载成功时的 ...

  10. cocos2dx 3.3创建新项目 和 VS2012解决方案加载失败问题

    cocos2dx 3.3创建新项目 和 VS2012解决方案加载失败问题 参考文章: (1)cocos2dx 3.3创建新项目 和 VS2012解决方案加载失败问题 (2)https://www.cn ...

最新文章

  1. js原理之执行上下文
  2. 一道面试题:用多种方法实现两个数的交换
  3. linux区分用户的权限级别可用,如何限制Linux内核级别的特权用户访问?
  4. php函数内调用类的变量,php - 如何调用一个类变量的闭包?
  5. Spring WebClient和Java日期时间字段
  6. 微海鼠标自动点击器 支持录制和循环播放
  7. Xcode常用技巧(1)-使用Xcode进行代码分析及GDB调试
  8. 华胜天成助力中国银联实现移动互联时代的多渠道扩张
  9. 《Redis开发与运维》读书笔记三
  10. CAN协议详解-01
  11. 计算语言学之拼写纠错
  12. 微信小程序使用webview打开pdf文档及显示网页内容
  13. ai中如何插入签名_如何在PDF文件中插入手写签名?手把手教会你,轻松设置签名...
  14. Krpano全景漫游开发手册
  15. win7桌面运行html,Win7桌面ie浏览器图标无法打开的原因及解决方法
  16. 肇庆学院计算机选修旷课,化学化工学院考查课管理办法(试行)
  17. 基于博客系统的访客日志记录
  18. Microsoft Office 历史版本
  19. PHP文件怎么改tne,修改 · thinkphp6文档 · 看云
  20. 解决 error: called object ‘xxx‘ is not a function or function pointer

热门文章

  1. EasiCSDeep:利用表面肌电信号识别颈椎病的深度学习模型
  2. C语言编程齿轮轮廓线坐标,C语言程序实现齿轮基本参数几何尺寸计算
  3. 基于树莓派的语音机器人
  4. List转Json数组
  5. C语言实现读取elf文件某section
  6. 使用C# 开始第一个QQ机器人
  7. abaqus单位问题
  8. 纯前端导出PDF分页截取问题处理
  9. js表单验证(提示版)
  10. java使用手册_java配置使用手册