Android调用第三方WPS打开word,excel等文件

本文介绍如何在Android应用中利用WPS来打开word、excel等Office文件。主要内容包括XML布局、MainActivity的代码实现、MyMimeMap类、WpsModel类以及AndroidManifest.xml的配置,特别是provider部分的设置。为了正常运行,需要确保文件存储在外部存储并具备文件读写权限,同时设备上已安装WPS软件。
摘要由CSDN通过智能技术生成

项目中遇到了使用第三方软件打开word,excel等文件的需求,最后是考虑用wps来打开这些软件。从网络上搜集了很多别人的代码,整理出来梳理一遍流程,做出一个小demo,实测可用。

限制:被打开的文档需要是存放在外部存储的(mnt目录下或者storage目录下),data目录下是内部存储,具体可以看看这篇博文https://blog.csdn.net/u012702547/article/details/50269639

 

直接上代码吧:

MainActivity的.xml文件:很简单就一个button用来点击触发事件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</LinearLayout>

在MainActivity里:File获取要打开的文件的路径,bundle传递wps打开的模式,稍后会有代码,FileOpen类执行具体打开操作

Button button = findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                File file = new File("/mnt/sdcard/计算公式整理v2.0.docx");

                Bundle bundle = new Bundle();
                bundle.putString(WpsModel.OPEN_MODE, WpsModel.OpenMode.NORMAL); // 打开模式
                bundle.putBoolean(WpsModel.ENTER_REVISE_MODE, true); // 以修订模式打开文档
                bundle.putBoolean(WpsModel.SEND_CLOSE_BROAD, true); // 文件关闭时是否发送广播
                bundle.putBoolean(WpsModel.SEND_SAVE_BROAD, true); // 文件保存时是否发送广播
                bundle.putBoolean(WpsModel.HOMEKEY_DOWN, true); // 单机home键是否发送广播
                bundle.putBoolean(WpsModel.BACKKEY_DOWN, true); // 单机back键是否发送广播
                bundle.putBoolean(WpsModel.SAVE_PATH, true); // 文件这次保存的路径
                bundle.putString(WpsModel.THIRD_PACKAGE, WpsModel.PackageName.NORMAL); // 第三方应用的包名,用于对改应用合法性的验证

                FileOpen.openFile(MainActivity.this,file);
            }
        });

MyMimeMap类:

public class MyMimeMap {

    private static final HashMap<String, String> mapSimple = new HashMap<>();
    /**
     *  常用"文件扩展名—MIME类型"匹配表。
     *  注意,此表并不全,也并不是唯一的,就像有人喜欢用浏览器打开TXT一样,你可以根据自己的爱好自定义。
     */
    public static HashMap<String, String> getMimeMap() {
        if (mapSimple.size() == 0) {
            mapSimple.put(".3gp", "video/3gpp");
            mapSimple.put(".apk", "application/vnd.android.package-archive");
            m
  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值