android在App应用内打开word、xls、pdf等office文档(基于腾讯tbs)
疫情还没结束,需求已经开始,捂上口罩来开工了。
(也好,戴口罩不用化妆,省钱了)
需求是像微信收藏里那样,列表里有不同类型的文件(office文档,视频,图片,音频),点击查看
图片和音视频是可以直接用webview的,office文档的话,自己解析肯定是不能够了,看网上都是用腾讯SDK——TBS,然后跟着去GitHub找了很多demo,放在项目里却都用不了
最后整合了几个demo里的代码使用 ,终于可以了
首先下载tbs的jar包放在libs目录下,并在项目中引入
SDK官方下载地址:http://x5.tencent.com/tbs/sdk.html
将so包放在jniLib下,不过这个so包只支持32位的手机,不支持64位的,所以build.gradle下的defaultConfig{}中加入ndk配置
虽然网上都说CPU的架构要只加载armeabi,但是我项目中有其他冲突的SDK,必须得放个armeabi-v7a
我在build.gradle中做如下设置是没问题的
清单文件中需具备以下权限
1 <uses-permission android:name="android.permission.INTERNET" /> 2 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 3 <uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION"/> 4 <uses-permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER"/> 5 <uses-permission android:name="android.permission.WRITE_SETTINGS"/> 6 <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
效果图
》》》 》》》
GitHub源码:https://github.com/yangxch/TBSFileBrowsing
原文章是https://blog.csdn.net/xch_yang/article/details/80989631
但是我使用作者的方法在android9.0以下都可以打开office,9.0以上就不行,提示插件加载失败之类的,之后在自定义的Application类里加上了提前初始化X5内核的代码
1 //初始化tbs的x5 2 QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() { 3 4 @Override 5 public void onViewInitFinished(boolean arg0) { 6 // TODO Auto-generated method stub 7 //x5內核初始化完成的回调,为true表示x5内核加载成功,否则表示x5内核加载失败,会自动切换到系统内核。 8 } 9 10 @Override 11 public void onCoreInitFinished() { 12 // TODO Auto-generated method stub 13 } 14 }; 15 QbSdk.initX5Environment(this,cb);
这样再跑在9.0的手机上就可以了