Android應(yīng)用內(nèi)展示word、excel、pdf、ppt等文件

筆者最近兩個(gè)項(xiàng)目里頭都有需要展示文件的功能,于是做了一番調(diào)研,發(fā)現(xiàn)asce1885給出一份方案,不過都是關(guān)于pdf的展示:http://m.itdecent.cn/p/1bf49af6584d,顯然不符合筆者的要求,筆者的項(xiàng)目里需要展示的文件格式并不單一,后來(lái)經(jīng)過一番搜索最后敲定使用騰訊的Tbs,可以在應(yīng)用內(nèi)打開各類型文件。不過這過程也有點(diǎn)坑。

什么是Tbs

騰訊瀏覽服務(wù)(TBS,Tencent Browsing Service)整合騰訊底層瀏覽技術(shù)和騰訊平臺(tái)資源及能力,提供整體瀏覽服務(wù)解決方案。TBS更多詳細(xì)的介紹,請(qǐng)移步:https://x5.tencent.com/tbs/

關(guān)于官網(wǎng)接入的坑

關(guān)于接入Tbs服務(wù)官網(wǎng)給出了接入文檔:https://x5.tencent.com/tbs/guide/sdkInit.html,很搞笑的是我找了很久也沒有發(fā)現(xiàn)具有打開文件能力demo工程,官網(wǎng)sdk里頭的demo工程居然都沒有展示文件功能,后來(lái)我發(fā)現(xiàn)官網(wǎng)論壇里有不少朋友留言,不知如何使用SdK打開文件,因此本文主要將的是如何使用SDK打開文件,以及對(duì)sdk打開文件的功能的簡(jiǎn)單封裝。

如何接入

參考:https://x5.tencent.com/tbs/guide/sdkInit.html

第一步

下載 SDK jar 包放到工程的libs目錄下

image.png

第二步

x5暫時(shí)不提供64位so文件,為了保證64位手機(jī)能正常加載x5內(nèi)核,進(jìn)行以下兩項(xiàng)設(shè)置:

(1)打開對(duì)應(yīng)module中的build.gradle文件,在文件的android{}中的defaultConfig{}里(如果沒有defaultConfig{}則手動(dòng)添加)添加如下配置: ndk{abiFilters "armeabi"}

image.png

(2)添加對(duì)應(yīng)目錄下的liblbs.so文件

image.png

如何展示文件

顯示文件關(guān)鍵代碼,例如:

Bundle localBundle = new Bundle();

localBundle.putString("filePath", mFile.toString());

localBundle.putString("tempPath", Environment.getExternalStorageDirectory() + "/" + "TbsReaderTemp");

if (this.mTbsReaderView == null)

this.mTbsReaderView = getTbsReaderView(context);

boolean bool = this.mTbsReaderView.preOpen(getFileType(mFile.toString()), false);

if (bool) {

this.mTbsReaderView.openFile(localBundle);

}

TbsReaderView是封裝的用于展示文件的View,繼承與FramLayout,首先調(diào)用mTbsReaderView.preOpen(getFileType(mFile.toString()), false)進(jìn)行文件打開之前的初始化工作,然后調(diào)用的mTbsReaderView.openFile(localBundle)打開文件,localBundle里包含有文件在本地的路徑,加載文件步驟十分簡(jiǎn)單,其中的加載任務(wù)全部交由tbs內(nèi)核完成。

簡(jiǎn)單封裝

有時(shí)候可能需要加載網(wǎng)絡(luò)文件,但是tbs目前是暫時(shí)不支持在線預(yù)覽的,因此是需要使用網(wǎng)絡(luò)將文件下載下來(lái)之后在展示,因此筆者這里對(duì)獲取文件路徑這一部分進(jìn)行封裝,如下:

public void show() {

if(mOnGetFilePathListener!=null){

mOnGetFilePathListener.onGetFilePath(this);

}

}

/***

* 將獲取File路徑的工作,“外包”出去

*/

public interface OnGetFilePathListener {

void onGetFilePath(SuperFileView2 mSuperFileView2);

}

TbsReaderView是上面的SuperFileView2的子View,完整使用如下:

mSuperFileView = (SuperFileView2) findViewById(R.id.mSuperFileView);

//設(shè)置獲取文件路徑監(jiān)聽

mSuperFileView.setOnGetFilePathListener(new SuperFileView2.OnGetFilePathListener() {

@Override

public void onGetFilePath(SuperFileView2 mSuperFileView2) {

getFilePathAndShowFile(mSuperFileView2);

}

});

Intent intent = this.getIntent();

String path = (String) intent.getSerializableExtra("path");

if (!TextUtils.isEmpty(path)) {

TLog.d(TAG, "文件path:" + path);

setFilePath(path);

}

mSuperFileView.show();

效果圖

展示doc文件

顯示doc文件

展示Excel文件

顯示Excel文件

展示pdf文件

顯示pdf文件

展示ppt文件

顯示ppt文件

展示txt

作者:鐘離四郎

鏈接:http://m.itdecent.cn/p/3f57d640b24d

來(lái)源:簡(jiǎn)書

著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,355評(píng)論 25 708
  • 文章用來(lái)記錄筆者接入X5瀏覽器的過程,和排查一些問題,希望能幫到大家,有問題可以一起探討。當(dāng)前TBS SDK版本v...
    碼農(nóng)一顆顆閱讀 18,801評(píng)論 2 12
  • 最基礎(chǔ)的使用方法 最簡(jiǎn)單的布局: 在Activity中使用WebView: 但只是這樣的話,在模擬器上是會(huì)直接調(diào)到...
    HolenZhou閱讀 7,953評(píng)論 12 33
  • 匆匆忙忙,忙忙碌碌,是否碌碌無(wú)為?
    wjnnni閱讀 308評(píng)論 0 0
  • 事情不知從何說起 情緒波涌 之后列表翻涌 果然就是小孩子行為啊 你奈我何 事情一大堆,可還是想把這些理透了先。 第...
    那就飄閱讀 392評(píng)論 0 1

友情鏈接更多精彩內(nèi)容