疫情還沒結束,需求已經開始,捂上口罩來開工了。
(也好,戴口罩不用化妝,省錢了)
需求是像微信收藏里那樣,列表里有不同類型的文件(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的手機上就可以了