一、Word、Excel、PPT 展示1. 微軟Office公開Api接口如果文檔內(nèi)容不是很機密或者只是需要實現(xiàn)預(yù)覽文檔的話,可以考慮使用微軟的公共Api接口實現(xiàn)。 微軟Office公開Api地址為:https://view.officeapps./op/view.aspx? 在Android上實現(xiàn)的方式如下: 首先拼接預(yù)覽地址URL: https://view.officeapps./op/view.aspx?src=http://xxx.pptx 然后使用WebView加載此URL。推薦配置如下: WebSettings settings = mWebView.getSettings(); settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); settings.setSaveFormData(true); settings.setSavePassword(true); settings.setUseWideViewPort(true); settings.setLoadWithOverviewMode(true); settings.setJavaScriptEnabled(true); settings.setJavaScriptCanOpenWindowsAutomatically(true); settings.setSupportZoom(true); /* * 支持HTTPS、HTTP混合模式 * http://blog.csdn.net/qq_16472137/article/details/54346078 */ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); } // 優(yōu)先渲染界面 settings.setRenderPriority(WebSettings.RenderPriority.HIGH); // Technical settings settings.setSupportMultipleWindows(true); settings.setCacheMode(WebSettings.LOAD_DEFAULT); settings.setAppCacheEnabled(true); settings.setDatabaseEnabled(true); settings.setDomStorageEnabled(true); settings.setAppCacheMaxSize(8 * 1024 * 1024); // 緩存最多可以有8M /* 支持cookies 5.0以上的手機不支持自動同步第三方cookies *(一般都是iframe里面的頁面要存儲cookies操作的設(shè)置) * http://blog.sina.com.cn/s/blog_6e73239a0102viku.html */ if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { CookieManager.getInstance().setAcceptThirdPartyCookies(mWebView, true); } // WebView 默認都是支持cookies CookieManager.getInstance().setAcceptCookie(true); 注意:此使用方式是將文檔的URL拼接到連接上即可實現(xiàn)在線預(yù)覽office文件,而不需要去下載文件。 但是有如下問題:
2. 使用文檔瀏覽Paas服務(wù)服務(wù)代表為:騰訊TBS瀏覽服務(wù)(免費)、百度文檔DOC服務(wù)(收費)。 對應(yīng)的地址:https://x5.tencent.com、https://cloud.baidu.com/doc/DOC/s/hjwvypsgp 騰訊TBS需要我們自行實現(xiàn)文件下載,然后調(diào)用的方TbsReadView法進行加載。 存在的問題: a). 加載功能不穩(wěn)定,有的機型加載正常,有的機型加載存在問題。最常見的問題就是 not supported by:xxx ,此問題非常影響用戶體驗。 b). 如果沒有安裝騰訊系的產(chǎn)品,TBS服務(wù)是無法使用了,因為騰訊系的產(chǎn)品都是基于X5內(nèi)核的,TBS服務(wù)也是基于X5內(nèi)核。 需要注意X5內(nèi)核部分版本存在內(nèi)存泄漏,需要在onDestory添加如下邏輯: @Override protected void onDestroy() { try { if (webView != null) { webView.stopLoading(); webView.removeAllViewsInLayout(); webView.removeAllViews(); CookieSyncManager.getInstance().stopSync(); webView.destroy(); webView = null; } } catch (Throwable throwable) { throwable.printStackTrace(); } finally { super.onDestroy(); } } 二、PDF 展示1. 使用騰訊TBS服務(wù)此方案基本和office文件加載的方案一樣,至于存在的問題也是一樣的。這里就多贅述了。 可參考開源項目:https://github.com/ZhongXiaoHong/superFileView 2. AndroidPdfViewer開源項目地址:https://github.com/barteksc/AndroidPdfViewer 開發(fā)參考文章:https://www.cnblogs.com/qixingchao/p/11658226.html 3. PdfViewPager開源項目地址:https://github.com/voghDev/PdfViewPager
|
|