【GT-安卓应用开发之Office在线预览】

前言:工作中经常会碰到文件的在线预览问题,今天恰巧刚好写了一个小demo,记录一下。

        首先,介绍一下几个目前比较常见的处理方式:

        1、文件下载,通过第三方工具打开

        这种方式需要用户先把文件下载后,再通过wps等软件打开,步骤较为繁琐,用户体验极差

        2、利用腾讯、百度等提供的SDK

        可以到官方下载SDK以及介绍等,腾讯提供的SDK虽然看似实现了在线预览,但是实际上也是经历了一个“下载—打开—删除”

的过程,简而言之其仅仅支持打开本地文件

        3、利用微软在线工具+WebView实现

        这种方式虽然需要跳转网页,加载速度有点慢,但是其用户体验相比较于第一种还是要强很多的;除此之外,利用WebView以网页跳转的形式在线预览不需要集成第三方SDK,一定程度上可以减轻APP的体积

        综上所述,我最终选用了第三种方案

        DEMO实现过程:

        1、创建MainActivity,点击TextView跳转OfficeViewActivity并且传递文档的url

@OnClick(R.id.start)
public void onViewClicked() {
    Intent intent = new Intent(MainActivity.this,OfficeViewActivity.class);
    //测试url
    String testUrl = "http://oss.rujiaowang.net/document/13566668888/%E3%80%90%E5%AD%A6%E6%A1%88%E3%80%916.1%20%E4%BA%BA%E7%9A%84%E8%AE%A4%E8%AF%86%E4%BB%8E%E4%BD%95%E8%80%8C%E6%9D%A5.doc";
    intent.putExtra("fileUrl",testUrl);
    startActivity(intent);
}

        2、接收到url,利用WebView的loadUrl跳转

preView("http://view.officeapps.live.com/op/view.aspx?src="+fileUrl+"");
private void preView(String fileUrl) {
    webview.loadUrl(fileUrl);
    webview.setWebChromeClient(webChromeClient);
    webview.setWebViewClient(webViewClient);
    WebSettings webSettings = webview.getSettings();
    webSettings.setJavaScriptEnabled(true);//允许使用js
    webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);//不使用缓存,只从网络获取数据.
    webSettings.setSupportZoom(true);
    webSettings.setBuiltInZoomControls(true);
    //不显示webview缩放按钮
    webSettings.setDisplayZoomControls(false);
}

        3、重写返回键

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    //重写返回键
    if (webview.canGoBack() && keyCode == KeyEvent.KEYCODE_BACK) {
        // /点击返回按钮的时候判断有没有上一页
        webview.goBack(); // goBack()表示返回webView的上一页面
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

        最后,附上demo地址

猜你喜欢

转载自blog.csdn.net/qq_17433217/article/details/83025239
今日推荐