引言: 项目需要预览pdf、word等文件,但是用户不一定安装了wps这样的软件,因此需要在项目里支持查看这些文件。笔者本身是不想使用webview的,因此尝试了很多原生的,但是对于doc文件基本没有什么好的方式,到最后还是用了腾讯的tbs文件游览服务。接入tbs坑较多,主要是x5内核的下载和各种配置问题,花费了两天才整理好,因此分享出来防止大家踩坑。
一、首先梳理一下选择tbs的理由
对于doc,docx文件,除tbs外似乎只有一种方式,利用poi解析doc,然后自己渲染成html。笔者尝试了这种方式,发现其原理是读取doc文件后,再把相关元素加上html的标签,用本地webview加载,html标签与doc文件毕竟有很大差距,因此展示效果很差,只能选择tbs。
然后是关于pdf的查看,这种方式略多,下面大致介绍下:
- pdf.js 这是火狐推出的可以在安卓上使用,并且文件并不大,使用难度相对不大
- 安卓原生的pdfRender,笔者使用感觉还可以,因为使用安卓自带的pdfRender,不需要额外导入文件,加载速度也还好,如果只需要显示pdf,推荐
- github上开源的pdfviewer,功能较为强大,但是因为会导致包至少增大无法被接受,项目地址https://github.com/barteksc/AndroidPdfViewer
- 采用外部链接在线预览,但是目前基本是国外链接,会被墙,不考虑
最后能够良好展示word文件的只有tbs,因此只能用它了。
二、tbs接入及踩坑
首先说一下坑的问题,实际上在本地利用tbs打开文件腾讯的文档是没有写的,因为腾讯想让我们优先使用他们的QbSdk,这样会优先打开QQ浏览器,现在的本地打开的方法是各路大神从源码找出来的,可能有各种疏忽,所以坑多。(不过腾讯的文档也怪扯淡的)
1.初始配置
先上官方文档: 腾讯浏览器tbs接入文档
下面进行大致梳理
1. 导入依赖
在app的build.gradle文件中增加依赖
api 'com.tencent.tbs.tbssdk:sdk:43939'
2.增加权限混淆,首次启动初始化冷启动优化(一定要加混淆,不然release版本不能用的
这里不做详细介绍,直接看官方文档,照着来就可以了。另外官方文档的异常上报措施可忽略。官方文档还有一个替换webview的,这种是指如果你项目本来使用了webview,但是现在你想换成使用腾讯的x5内核,那么就需要按照腾讯的做法替换,如果不想替换,那可以不用变,因为接入腾讯x5内核后,安卓原生的webview仍然是可以用的。
3、使用
从这里开始文档就相当坑爹了,腾讯文档被没有讲如何初始化x5内核,甚至x5内核到底初始化成功了都没有介绍。
首先介绍一下x5内核,x5内核就是QQ浏览器的内核,对安卓的webview做了一层封装,在你