Android 在线预览文件

来源:互联网 发布:药品网络销售方法 编辑:程序博客网 时间:2024/06/11 02:09

在公司最近一个项目中,有一个需求是在线预览文件功能。重点是文件不能外露,也就是只能看,不能下载。

当时我的想法有四个:

(1)文件下载到本地,使用第三方应用打开,退出后删除该文件。

(2)使用TBS(腾讯浏览服务)打开。

(3)使用微软提供的预览效果,使用webview打开

(4)使用百度云文档服务


下面我就来说说这四种方式的缺点:

方式一:文件下载到本地,使用第三方应用打开。退出后删除该文件

我在试这种方式的时候,发现第三方的应用有提供  另存为 功能,那就不能使用这种功能了,不符合公司的要求:只能看,不能下载。


方式二:使用TBS(腾讯浏览服务)打开

这种方式目前也没有提供在线预览功能,只能是下载到本地,再使用TBS(腾讯浏览服务)打开,退出该界面的时候,删除该文件。

这种方式的加载文件速度很快,与界面的兼容性做得很好。

最终我还是没有使用这种方式,原因有两个:

1.没有在线预览效果,只能下载到本地。与公司的要求不符合。

2.我用四台手机来测试的时候,居然有一台手机死活就是不能加载。显示的原因是不支持文件类型,我怀疑是不是我的集成错了,试了好些次还是不行。


方式三:使用微软提供的预览效果,使用WebView打开

这种方式用了一段时间感觉还是不错的。PC端也使用这种方式,使用起来很方面,就组一串url,扔给webview就能显示了。

最终我还是没有使用这种方式,原因是 文件大的时候,加载的速度很慢,有时候还加载不出来。


方式四:使用百度云文档服务

百度提供相应的在线预览功能,集成显示都很方便。

后来领导的想法是,移动端还是使用webview加载url的方式,百度云文档服务的集成放在 js或H5(这个不清除是怎么操作的),然后提供给我们一个url即可。


下面我主要讲的是后面两种实现在线预览的方式


1.使用微软提供的预览效果,使用WebView打开

将文件地址和http://view.officeapps.live.com/op/view.aspx?src=

拼接成新的url,再用webview加载即可。

String finalUrl = "http://view.officeapps.live.com/op/view.aspx?src=" + realUrl + "";        Log.e("tag_finalUrl", finalUrl + "");        mWebView.loadUrl(finalUrl);

realUrl : 文件的地址


2.使用百度云文档服务(本地集成)

集成方面的操作请参考:文档服务

代码:

String host = "BCEDOC"; // 百度云传回的host    String docId = "doc-hmmm9y4j01kwmjk"; // 百度云传回的docId    String docType = "doc"; // 百度云传回的文档类型 doc/ppt/ppts等    String token = "TOKEN"; // 百度云传回的token    String thisDocDir = ""; // 指定为空串""表示在线浏览    int totalPage = 3; // 总页数,必须准确填写 否则在离线浏览时会有问题    String docTitle = "百度云文档服务";    int startPage = 1; // 起始浏览页,最小值为1,请不要填入小于1的值    BDocInfo docInfo;    private BDocView  mDocView;


mDocView = (BDocView) findViewById(R.id.doc_view);


docInfo = new BDocInfo(host, docId, docType, token)                .setLocalFileDir(thisDocDir)                .setTotalPage(totalPage)                .setDocTitle(docTitle)                .setStartPage(startPage);        mDocView.setOnDocLoadStateListener(new BDocView.OnDocLoadStateListener() {            @Override            public void onDocLoadComplete() {                Log.d("test", "onDocLoadComplete");            }            @Override            public void onDocLoadFailed(String errorDesc) {                // errorDesc format: ERROR_XXXX_DESC(code=xxxxx)                Log.d("test", "onDocLoadFailed errorDesc=" + errorDesc);            }            @Override            public void onCurrentPageChanged(int currentPage) {                // 记录当前页面                Log.i("test", "currentPage = " + currentPage);            }        });        // 加载文档        mDocView.loadDoc(docInfo);

xml:

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="com.example.user.docshowonline.MainActivity">    <com.baidu.bdocreader.BDocView        android:id="@+id/doc_view"        android:layout_width="match_parent"        android:layout_height="match_parent">    </com.baidu.bdocreader.BDocView></RelativeLayout>


百度云文档服务还有提供下载功能,我在这里就不多介绍了,感兴趣的同学可以去看看。





阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 副舟骨突出怎么办 副舟骨先天凸起怎么办 腿骨黑了怎么办 骨关节痛怎么办 脚骰骨突出怎么办 体检晨尿憋不住怎么办 遭人诽谤怎么办 晚上咳嗽睡不着怎么办 晚上咳嗽不止怎么办 不喜欢大学舍友怎么办 不喜欢室友怎么办 不喜欢大学室友怎么办 讨厌室友怎么办 讨厌室友心很累怎么办 小孩惊吓怎么办 新生儿晚上哭闹怎么办 孩子容易走神怎么办 小孩子特别爱哭怎么办 孩子一说就哭该怎么办 新生儿下午哭闹怎么办 新生儿傍晚哭闹怎么办 焦虑症怎么办 新生儿黄昏闹怎么办 宝宝大便困难怎么办? 婴儿黄昏闹怎么办 新生儿排便少怎么办 孩子一直哭闹怎么办 宝宝上学哭闹怎么办 小宝宝胀气哭闹怎么办 婴儿夜间哭闹怎么办 小孩子经常哭闹怎么办 新生儿总是哭闹怎么办 囟门闭合晚怎么办 囟门闭合过早怎么办 宝宝卤门早闭怎么办 宝宝睡前总哭闹怎么办 夜间咳嗽厉害怎么办 丙辰见壬辰怎么办 命中六亲无靠怎么办 六亲无靠之命怎么办 怎么办一个茶会