Android wps文件下载、预览

穆俊哲
2023-12-01

Android wps文件下载、预览

可能大家都遇到了Android处理办公文件不太方便的问题,先强调一点Android是做不到在线预览的,目前的解决方案都是先下载在打开,这里我提供我常用的两种方案,仅供参考,如有不对的还请批评指正,也欢迎沟通交流。

跳转浏览器打开下载

这中方案是最简单的,直接跳转到我们手机浏览器,浏览器来接管后面用户下载浏览的工作。
情景一
通过一个Button跳转

Intent intent = new Intent();
intent.setAction("android.intent.action.VIEW");
Uri uri = Uri.parse(url);//url文件地址
intent.setData(uri);
startActivity(intent);

情景二
今天我们的项目经理的需求,App内部使用WebView打开了一个网页,网页里包含一个文件地址,点击文件链接跳转浏览器

 webView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                if (url.contains(".pdf") || url.contains(".zip") || url.contains(".xls") || url.contains(".doc")) {
                    Intent intent = new Intent();
                    intent.setAction("android.intent.action.VIEW");
                    Uri uri = Uri.parse(url);
                    intent.setData(uri);
                    startActivity(intent);//打开浏览器
                    return true;
                } else {
                    view.loadUrl(url); // 在当前的webview中跳转到新的url
                    return false;
                }
            }
        });

这个地方我们需要new 一个WebViewClient给WebView, 在里面去拦截网页跳转事件,当url地址包含文件后缀时跳转到浏览器,否则继续加载该url

采用TbsSDK可App内部查看文件(目前鸿蒙系统好像不兼容)

TbsSDK是腾讯提供的一种共享X5内核的sdk,只要你的手机安装有QQ浏览器、QQ、VX等腾讯软件就可以共享他们的X5内核功能。官网地址

然后我们这里简单的说一下怎么使用
SDK接入
jar包方式集成 您可将官网下载的jar包复制到您的App的libs目录,并且通过Add As Library的方式集成TBS SDK
Gradle方式集成 您可以在使用SDK的模块的dependencies中添加引用进行集成:

api 'com.tencent.tbs.tbssdk:sdk:43903'

权限配置

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

创建BaseApplication,调用TbsDownloader 的 needDownload(Context context, boolean oversea) 方法,并在Menifest文件中声明BaseApplication。

public class BaseApplication extends Application {
	@Override
	public void onCreate() {
    	super.onCreate();
    	TbsDownloader.needDownload(getApplicationContext(), false);
	}
}

添加com.tencent.smtt.sdk.WebView布局

<com.tencent.smtt.sdk.WebView
    android:id="@+id/tbs_web_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>

使用tbsWebView控件打开文件

HashMap<String, String> params = new HashMap<String, String>(); 
params.put("style", "1"); 
params.put("local", "true"); 
params.put("memuData", jsondata); 
QbSdk.openFileReader(ctx,”/sdcard/xxx.doc”, params,callback);

tbsWebView其他使用方式基本与原生WebView相同

 类似资料: