一、Word、Excel、PPT 展示

1. 微软Office公开Api接口

如果文档内容不是很机密或者只是需要实现预览文档的话,可以考虑使用微软的公共Api接口实现。

微软Office公开Api地址为:https://view.officeapps.live.com/op/view.aspx?

在Android上实现的方式如下:

首先拼接预览地址URL:

https://view.officeapps.live.com/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);
} // 优先渲染界面
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操作的设置)
* 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拼接到连接上即可实现在线预览office文件,而不需要去下载文件。

但是有如下问题:

  • 若是使用微软的预览接口,你的文档url地址将会被暴露,缺失所谓文档的安全性。
  • 若文件过大时候,加载的速度很慢,有时候还加载不出来。

2. 使用文档浏览Paas服务

服务代表为:腾讯TBS浏览服务(免费)、百度文档DOC服务(收费)。

对应的地址:https://x5.tencent.comhttps://cloud.baidu.com/doc/DOC/s/hjwvypsgp

腾讯TBS需要我们自行实现文件下载,然后调用的方TbsReadView法进行加载。

存在的问题:

a). 加载功能不稳定,有的机型加载正常,有的机型加载存在问题。最常见的问题就是 not supported by:xxx ,此问题非常影响用户体验。

b). 如果没有安装腾讯系的产品,TBS服务是无法使用了,因为腾讯系的产品都是基于X5内核的,TBS服务也是基于X5内核。

百度DOC服务不需要自行实现下载,逻辑相对简单,但是需要收费。

存在的问题:未知(// TODO 目前还未做尝试接入的事情,后续接入体验后再整理 )

二、PDF 展示

1. 使用腾讯TBS服务

此方案基本和office文件加载的方案一样,至于存在的问题也是一样的。这里就多赘述了。

2. AndroidPdfViewer

开源项目地址:https://github.com/barteksc/AndroidPdfViewer

开发参考文章:https://www.cnblogs.com/qixingchao/p/11658226.html

3. PdfViewPager

开源项目地址:https://github.com/voghDev/PdfViewPager

Android App内文档展示方案整理的更多相关文章

  1. Android根据word模板文档将表单数据生成word文档的方案整理

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 尝试的方案包括以下几种: freemarker 只能在java项目上运行,无法在Android项目上运行: 参考资料:<Fre ...

  2. PoiDemo【Android将表单数据生成Word文档的方案之二(基于Poi4.0.0)】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 使用Poi实现android中根据模板文件生成Word文档的功能.这里的模板文件是doc文件.如果模板文件是docx文件的话,请阅读 ...

  3. 开源整理:Android App新手指引开源控件

    开源整理:Android App新手指引开源控件 一个App第一次与用户接触或者发生大版本更新时,常常会用户进行新手引导,而一个好的新手指引,往往能够方便新用户快速了解操作你的应用功能.新手指引的重要 ...

  4. 转载: 开源整理:Android App新手指引开源控件

    http://blog.coderclock.com/2017/05/22/android/open-source-android-app-guide-view-library/ 开源整理:Andro ...

  5. Android APP开发需求文档范本

    Android  APP开发需求文档范本 软件需求文档格式的标准写法 1.引言 1.1 编写目的 • 阐明开发本软件的目的: 1.2 项目背景 • 标识待开发软件产品的名称.代码: • 列出本项目的任 ...

  6. PoiDocxDemo【Android将表单数据生成Word文档的方案之二(基于Poi4.0.0),目前只能java生成】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 这个是<PoiDemo[Android将表单数据生成Word文档的方案之二(基于Poi4.0.0)]>的扩展,上一篇是根 ...

  7. Android App签名打包 与 SDK开发文档

    Android App签名打包签名的意义1.为了保证每个程序开发者的合法权益2.放置部分人通过使用相同的Package Name来混淆替换已经安装的程序,从而出现一些恶意篡改3.保证我们每次发布的版本 ...

  8. Android APP性能及专项测试(个人整理)

    移动测试. Android测试 .APP测试   Android篇 1. 性能测试 Android性能测试分为两类:1.一类为rom版本(系统)的性能测试2.一类为应用app的性能测试 Android ...

  9. fir.im Weekly - 如何进行 Android App 性能优化

    关于 Android App 的优化,@anly-jun 用 3 个月完成了这一系列文章,从 性能分析工具 到 ANR .Layout .消除卡顿 到 内存优化.内存分析工具大概十五六篇,并对此做一个 ...

随机推荐

  1. JVM学习笔记(1)--运行时数据区域

    运行时数据区域 相对于c,c++.程序设计时,java并不需要手动释放或者创建内存用于存放程序,这的确使得java开发变得容易和轻松,一旦有一天出现了内存泄漏或者内存溢出的问题,如果不了解JVM虚拟机 ...

  2. Selenium+Java(六)Selenium 强制等待、显式等待、隐实等待

    前言 在实际测试过程中,由于网速或性能方面的原因,打开相应的网页后或在网页上做了相应的操作,网页上的元素可能不会马上加载出来,这个时候需要在定位元素前等待一下,等元素加载出来后再进行定位,根据实际使用 ...

  3. P1046 陶陶摘苹果

    题目描述 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出1010个苹果.苹果成熟的时候,陶陶就会跑去摘苹果.陶陶有个3030厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试. 现在 ...

  4. 如何解决jpa 要求column 名称单词必须用下划线

    [转]:http://www.jeesns.cn/article/detail/6657 先引出轮子http://blog.csdn.net/54powerman/article/details/76 ...

  5. 神奇的 SQL 之 联表细节 → MySQL JOIN 的执行过程(一)

    开心一刻 我:嗨,老板娘,有冰红茶没 老板娘:有 我:多少钱一瓶 老板娘:3块 我:给我来一瓶,给,3块 老板娘:来,你的冰红茶 我:玩呐,我要冰红茶,你给我个瓶盖干哈? 老板娘:这是再来一瓶,我家卖 ...

  6. 机器学习笔记(十)---- KNN(K Nearst Neighbor)

    KNN是一种常见的监督学习算法,工作机制很好理解:给定测试样本,基于某种距离度量找出训练集中与其最靠近的k个训练样本,然后基于这k个"邻居"的信息来进行预测.总结一句话就是&quo ...

  7. Sql增加,删除,修改列

    1. 查看约束条件 - MySQL: SELECT * FROM information_schema.`TABLE_CONSTRAINTS` where table_name = 'book'; - ...

  8. Xcode10.0: NO BUNDLE URL PRESENT

    目录 解决方案 1.删除build, 重新运行, 没有work 2.删除node_modules, npm i, 重新运行, 没有work 3.删除端口占用 4.代理设置, 可能work了 解决方案 ...

  9. C++fread小解

    std::fread ——C++ 输入/输出库 C 风格 I/O 定义于头文件 <cstdio> std::size_t fread( void* buffer, std::size_t ...

  10. THREE.js 笔记

    1.加载3d模型,obj格式,方式一: 加载obj,自行指定material贴图:方式二: 同时加载obj和mtl,此时为了正确加载贴图,最好指定统一的baseUrl: 2.canvas.toData ...