美文网首页AndroidAndroid笔记
安卓APP调用WPS打开Office文件并返回APP

安卓APP调用WPS打开Office文件并返回APP

作者: 敲代码的小三爷 | 来源:发表于2018-11-13 17:29 被阅读561次

原创文章:转载请注明出处

安卓APP调用WPS打开Office文件并返回APP功能实现(附wps工具)

在某些app(如OA系统app)开发工程中,往往会遇到编辑Office文档的需求,而我们一般采取最为有效的方法便是调用三方的专业Office软件。

基础功能:app跳转WPS打开Office文档

  • 检查是否已安装WPS
private boolean checkWps(){
    Intent intent = getPackageManager().getLaunchIntentForPackage("cn.wps.moffice_eng");//WPS个人版的包名
    if (intent == null) {
        return false;
    } else {
        return true;
    } 
}
  • 打开文档
Intent intent = mActivity.getPackageManager().getLaunchIntentForPackage( "cn.wps.moffice_eng");
Bundle bundle = new Bundle();
intent.setData(Uri.parse(fileUrl));//这里采用传入文档的在线地址进行打开,免除下载的步骤,也不需要判断安卓版本号
intent.putExtras(bundle);
mActivity.startActivity(intent);

进阶功能:设置文档打开模式,使用广播进行WPS操作监听

  • 创建接口与广播
// 回调接口
public interface WpsInterface {
    void doRequest(String filePath);//filePath为文档的保存路径
    void doFinish();
}
// 广播接收器
private class WpsCloseListener extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        try {
            if (intent.getAction().equals("cn.wps.moffice.file.save")) {
                String fileSavePath = intent.getExtras().getString(Define.SAVE_PATH);
                if(canWrite) {
                    wpsInterface.doRequest(fileSavePath);// 保存回调
                }
            } else if (intent.getAction().equals("cn.wps.moffice.file.close")||
                    intent.getAction().equals("com.kingsoft.writer.back.key.down")) {
                wpsInterface.doFinish();// 关闭,返回回调
                mActivity.unregisterReceiver(wpsCloseListener);//注销广播
            }
        }catch (Exception e) {
            e.printStackTrace();
        }
    }
}
  • 注册广播
public void initWpsCloseListener() {
    wpsCloseListener = new WpsCloseListener();
    IntentFilter filter = new IntentFilter(Define.OFFICE_SERVICE_ACTION);
    filter.addAction("com.kingsoft.writer.back.key.down");//按下返回键
    filter.addAction("com.kingsoft.writer.home.key.down");//按下home键
    filter.addAction("cn.wps.moffice.file.save");//保存
    filter.addAction("cn.wps.moffice.file.close");//关闭
    mActivity.registerReceiver(wpsCloseListener,filter);//注册广播
}
  • 打开文档
public void openDoc() {
    Bundle bundle = new Bundle();
    if (canWrite) {// 判断是否可以编辑文档
        bundle.putString("OpenMode", "Normal");// 一般模式
    } else {
        bundle.putString("OpenMode", "ReadOnly");// 只读模式
    }
    bundle.putBoolean("SendSaveBroad", true);// 关闭保存时是否发送广播
    bundle.putBoolean("SendCloseBroad", true);// 关闭文件时是否发送广播
    bundle.putBoolean("HomeKeyDown", true);// 按下Home键
    bundle.putBoolean("BackKeyDown", true);// 按下Back键
    bundle.putBoolean("IsShowView", false);// 是否显示wps界面
    bundle.putBoolean("AutoJump", true);// //第三方打开文件时是否自动跳转
    //设置广播
    bundle.putString("ThirdPackage", mActivity.getPackageName());
    //第三方应用的包名,用于对改应用合法性的验证
    //bundle.putBoolean(Define.CLEAR_FILE, true);
    //关闭后删除打开文件
    intent.setAction(android.content.Intent.ACTION_MAIN);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
    intent.setData(Uri.parse(fileUrl));
    intent.putExtras(bundle);
    mActivity.startActivity(intent);
}
  • 返回到你的app页面
    *为了适配大部分机型而采用以下方式将你的app从后台拉回前台,需要将你的跳转前(栈顶)activity启动模式设置为singleTop,且重新打开的页面为新的页面,需要手动finish();
public void appBack() {
    try {
        ActivityManager mAm = (ActivityManager) mActivity.getSystemService(Context.ACTIVITY_SERVICE);
        //获得当前运行的task
        List<ActivityManager.RunningTaskInfo> taskList = mAm.getRunningTasks(1);
        //找到当前应用的task,并启动task的栈顶activity,达到程序切换到前台
        for (ActivityManager.RunningTaskInfo rti : taskList) {
            if (rti.topActivity.getPackageName().equals(mActivity.getPackageName())) {
                Intent LaunchIntent = new Intent(Intent.ACTION_MAIN);
                ComponentName cn = new ComponentName(mActivity.getPackageName(), rti.topActivity.getClassName());
                LaunchIntent.setComponent(cn);
                mActivity.startActivity(LaunchIntent);
                break;
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

希望此篇文章能为你带来帮助!再会!如有疑问🤔️或需要相关工具请联系我
联系QQ:1018895572
最后,祝你生活愉快!

相关文章

  • 安卓APP调用WPS打开Office文件并返回APP

    原创文章:转载请注明出处 安卓APP调用WPS打开Office文件并返回APP功能实现(附wps工具) 在某些ap...

  • Android 使用URL链接打开App

    实现一下浏览器通过通过URL打开指定的APP功能。   1、安卓设备已安装APP,打开App并跳到指定的的页面。 ...

  • 微信小程序使用腾讯文档打开文档

    一. 需求 能在小程序内打开文档, 希望不是调用自己的app(例如wps)来打开, 而是可以直接不用app打开, ...

  • 如何下载手机版OA系统?

    安卓手机 打开浏览器,输入s.u0759.con/app,选择安卓手机,点击下载即可。 苹果手机 打开App st...

  • APP下载引导页H5开发

    开发APP下载引导页,情况说明:1.APP下载链接由后台返回2.iOS版本打开到AppStore下载3.安卓版本链...

  • 跟谁学APP

    1.手机用户(IOS、安卓通用) ①.打开APP Store,搜索“跟谁学”获取APP ②.打开APP,选择您想了...

  • 安卓个版本安装app

    安卓个版本安装app 6.0之前安装app 7.0安装app 在 xml 添加 file_paths.xml 文件...

  • 打开第三方应用

    需要在真机上调试,例子中打开的是 doc文件,如果手机上装了WPS或者office套件,就能调用这些应用打开。 2...

  • 津e生活APP(安卓)与web页面交互说明

    安卓APP与web类网页交互形式主要有两种: 一是web页javascript调用安卓原生组件 二是安卓原生调用w...

  • ionic2实战-最小化app

    前言 点击安卓硬件返回按钮app会默认退出,现在想要实现像QQ一样,点击返回按钮最小化app,再点app图标直接进...

网友评论

    本文标题:安卓APP调用WPS打开Office文件并返回APP

    本文链接:https://www.haomeiwen.com/subject/ghelfqtx.html