????????前段時間開發(fā)需求要實現在android端預覽下載下來的word和pdf文件,在此總結一下幾種實現方案供大家參考(第三方平臺在此就不介紹了~).
demo下載地址:????download.csdn.net/download/qq_32840093/10121883
?一 PDF格式文件 展示:
? ? ? ? ? (1)https://github.com/JoanZapata/android-pdfview????此三方控件只支持項目assets目錄下的pdf文件展示
? ? ? ? ? (2)https://github.com/barteksc/AndroidPdfViewer????此三方控件支持手機本地文件,項目assets目錄下的pdf文件展示;
? ? ? ? ??(3)?使用js的pdf庫在線預覽,實現思路先將js的pdf預覽庫導入到assets,在通過js的pdf庫實現預覽,產考demo實例代碼(可能會會應為跨域的問題失效)
二 office文件(doc,docx,xls,xlsx,ppt,pptx) 展示:
????????1 最簡單的方法是通過隱式intent調用手機中的文檔處理相關的app,打開并處理此類文檔;
/**
* 調用手機中安裝的可打開word的軟件
*/
private voiddoOpenWord(){
Intent intent =newIntent();
intent.setAction("android.intent.action.VIEW");
intent.addCategory("android.intent.category.DEFAULT");
String fileMimeType ="application/msword";
intent.setDataAndType(Uri.fromFile("預覽文件"),fileMimeType);
try{
MainActivity.this.startActivity(intent);
}catch(ActivityNotFoundException e) {
//檢測到系統(tǒng)尚未安裝OliveOffice的apk程序
Toast.makeText(MainActivity.this,"未找到軟件",Toast.LENGTH_LONG).show();
//請先到www.olivephone.com/e.apk下載并安裝
}
}
????????2 如果項目需求必須要在應用內部打開office文檔則相對復雜一些,處理方式如下:
網上有很多關于此類問題的解決辦法,但是大部分都是使用java中的apache poi來處理office文檔,缺點就是如果不太熟悉poi的使用則會消耗大量學習成本,并且在android環(huán)境下使用poi可能會遇到丟失某些類的問題(因為android只支持部分java api),將poi中相應的jar包加入項目還可能會遇到打包65535的問題;
一個快速的解決方法:
如果項目需求只要求預覽內容而不要求對文檔進行編輯的操作,則可以選擇在線預覽的方式進行處理;
現附上兩個在線預覽office文檔的地址:(瀏覽器都需要chrome的內核),這個方法還是很雞肋的,不翻墻是達不到預覽效果.
1 google:https://docs.google.com/viewer?url=(輸入你的文檔在服務器中的地址);
2 微軟:https://view.officeapps.live.com/op/view.aspx?src=(輸入你的文檔在服務器中的地址);
關于是否使用原生的webview或是使用優(yōu)化后的webview,則根據項目中的minSdkVersion來自行選擇;(android4.4之前webview使用的是webket內核,4.4以上使用的是chrome內核)。
推薦使用一個優(yōu)化后的webview:https://github.com/delight-im/Android-AdvancedWebView(支持android2.2及以上)。