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的手机上就可以了

原文地址:https://www.cnblogs.com/Sharley/p/12462860.html