WPS二次开发系列:WPS SDK打开在线文档

news2024/11/16 3:48:43
作者持续关注WPS二次开发专题系列,持续为大家带来更多有价值的WPS开发技术细节,如果能够帮助到您,请帮忙来个一键三连,更多问题请联系我(QQ:250325397)

目录

需求场景

效果展示

3、实现步骤

3.1 步骤一、申请WPS-SDK集成资源及对接Demo

3.2 步骤二、开始集成

3.2.1.添加依赖库

3.2.2.SDK初始化

3.2.3 调用API打开文档(单开)

需求场景

在项目开发中会碰到需要在自己的应用中(OA系统)调用WPS打开Word,Excel,Ppt等Office系列文档(文档是在线的,只有文档链接)的情况,此文介绍了WPS-SDK调用相关API文档完美实现的从第三方用于调用API打开WPS在线文档进行文档编辑保存后并将文档保存结果回传给第三方应用服务器的功能。

效果展示

3、实现步骤

3.1 步骤一、申请WPS-SDK集成资源及对接Demo

通过邮件申请:

邮件模板:
发起人:有需要申请接入WPS移动端的企业或者个人
邮件主题: XXX公司XXX项目---WPS Android端 SDK二次开发集成申请
邮件发送: m_open_sdk@wps.cn
邮件内容
请明确包含申请项目背景规模、集成应用第三方APP包名, 具体需求 集成周期等

3.2 步骤二、开始集成

3.2.1.添加依赖库

将WPS提供集成资源压缩包里面libs相关的aar文件集成到自己的工程中

3.2.2.SDK初始化

在自己工程Application的onCreate方法中调用SDK的初始化Api, 参考如下

SdkConfig config = new SdkConfig.Builder()
   //开启日志开关
      .setEnableDebug(true)
      .build();
//初始化
WpsSdk.getInstance().init(this,config);

3.2.3 调用API打开文档(单开)

PS: 打开:一次打开一个文档

参考示例代码

private void openFromUrl() {
        String url = "http://xxx:8080/OADemo/file/欢迎使用WPS Office.docx";
        FileApi fileApi = WpsSdk.getInstance().getApi(FileApi.class);
        if (fileApi != null) {
            Uri uri = Uri.parse(url);
            fileApi.addEventListener(MainActivity.this, ApiEvent.DocumentAfterSave,new EventListener(){
                @Override
                public void onEvent(String s, Bundle bundle) {
                    String path = bundle.getString("CurrentPath");
                    //注意在高版本Android系统中,第三方应用是无法读取WPS私有路径,需要通过获取WPS提供的URI来访问文档数据
                    Uri currentFileUri = bundle.getParcelable("CurrentFileUri");
                    Log.d("WpsSdk", "demo onEvent DocumentAfterSave : s=" + s + " bundle=" + bundle + " path=" + path+ " currentFileUri="+currentFileUri);
                    Toast.makeText(MainActivity.this, "currentFileUri="+currentFileUri, Toast.LENGTH_SHORT).show();
                }
            });
            fileApi.openFile(MainActivity.this,uri);
        }
    }

3.2.4. 完成文档保存事件监听

WPS SDK 提供了保存完成回调通知 能力,通过保存完成事件通知,第三方应用可以监听到WPS端保存完成事件回调然后执行相应的业务逻辑(如上传文件到第三方服务器)。

FileApi fileApi = WpsSdk.getInstance().getApi(FileApi.class);
if (fileApi != null) {
    Uri uri = Uri.parse(url);
    fileApi.addEventListener(MainActivity.this, ApiEvent.DocumentAfterSave,new EventListener(){
        @Override
        public void onEvent(String s, Bundle bundle) {
            String path = bundle.getString("CurrentPath");
            //注意在高版本Android系统中,第三方应用是无法读取WPS私有路径,需要通过获取WPS提供的URI来访问文档数据
            Uri currentFileUri = bundle.getParcelable("CurrentFileUri");
            Log.d("WpsSdk", "demo onEvent DocumentAfterSave : s=" + s + " bundle=" + bundle + " path=" + path+ " currentFileUri="+currentFileUri);
            //TODO 上传到第三方应用服务器(文件服务器)
            uploadFile(currentFileUri);
        }
    });
    fileApi.openFile(MainActivity.this,uri);
}

至此一个第三方应用调用WPS打开在线文档,进行文档编辑并监听保存完成后的文档回传给第三方应用的功能完成,是不是超级简单。如果此文对您有帮助,欢迎一键三连💪

更多请参考:解锁WPS二次开发新世界:Android开发用户专属极速接入秘籍!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1622004.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

spring boot3单模块项目工程搭建-下(个人开发模板)

⛰️个人主页: 蒾酒 🔥系列专栏:《spring boot实战》 🌊山高路远,行路漫漫,终有归途 目录 写在前面 上文衔接 常用依赖介绍以及整合 web组件 测试组件 样板代码生成 数据库连接器 常用工具包 面向切面编…

《QT实用小工具·三十九》仿 Windows10 画图3D 的颜色选择器, 但更加强大

1、概述 源码放在文章末尾 该项目实现了仿 Windows10 画图3D 的颜色选择器,功能更加丰富更加强大。 项目部分代码如下所示: import QtQuick 2.15 import QtQuick.Controls 2.15 import QtQuick.Layouts 1.15 import QtGraphicalEffects 1.15Item {id…

【踩坑】libtorch load 报错 No such file or directory

转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,请不吝给个[点赞、收藏、关注]哦~ 目录 报错背景 报错原因 解决方法 方法一:把你的编译配置转为release版本 方法二:安装debug版本的libtorch 报错背景…

算法学习001-圆桌问题 中小学算法思维学习 信奥算法解析 c++实现

目录 算法学习001-圆桌问题 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 七、推荐资料 算法学习001-圆桌问题 一、题目要求 1、编程实现 圆桌边围坐着2n个人,其中n个人是好人&#xff0c…

Redis 安装及配置教程(Windows)【安装】

文章目录 一、简介一、 下载1. GitHub 下载2. 其它渠道 二、 安装1. ZIP2. MSI 软件 / 环境安装及配置目录 一、简介 Redis 官网地址:https://redis.io/   Redis 源码地址:https://github.com/redis/redis   Redis 官网安装地址(无Windo…

基于SSM的物业管理系统(含源码+sql+视频导入教程+文档+PPT)

👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于SSM的物业管理系统2拥有三种角色 管理员:用户管理、物业管理、房产信息管理、小区概况管理、开发商管理、收费标准管理、物业公司管理等 物业:住户管理、收费…

vector的使用(部分接口)

1.vector的使用 1.1vector的定义 (constructor)构造函数声明接口说明vector()无参构造vector (const vector& x)拷贝构造 1.2vector iterator 的使用 iterator的使用接口说明begin end获取第一个数据位置的iterator/const_iterator, 获取最后一个数据的下一个位…

【数据结构】单链表的特点

🎈个人主页:豌豆射手^ 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:数据结构 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进…

UML——类图详解

目录 1. 前言 2. 类图概述 3. 类图表示法 3.1 类的表示方式 3.2 类与类之间关系的表示方式 (1)继承(泛化)关系 (2)实现关系 (3)依赖关系 (4)一般关联关系 (5)聚合关系 (6)组合关系 1. 前言 UML全称(Unified Modeling Language),译为统一建模语言&#x…

Android自定义ListView单击事件失效的解决方法

因为自带的listView不能满足项目需求,通过实现自己的Adapter去继承ArrayAdapter 来实现自定义ListView的Item项目。 出现点击ListView的每一项都不会执行setOnItemClickListener 里面的onItemClick 方法。 原因是item里面存在一些子控件,默认点击获取的…

使用 PhpMyAdmin 安装 LAMP 服务器

使用 PhpMyAdmin 安装 LAMP 服务器非常简单。按照下面所示的步骤,我们将拥有一个完全可运行的 LAMP 服务器(Linux、Apache、MySQL/MariaDB 和 PHP)。 什么是 LAMP 服务器? LAMP 代表 Linux、Apache、MySQL 和 PHP。它们共同提供…

如何在PostgreSQL中实现分布式事务,特别是在多节点集群环境中?

文章目录 解决方案:使用Citus实现分布式事务步骤一:安装和配置Citus步骤二:定义分布式表和分布键步骤三:执行分布式事务示例代码 总结 在PostgreSQL中实现分布式事务,特别是在多节点集群环境中,是一个复杂但…

c++ - 模板(一)

文章目录 一、函数模板 一、函数模板 1、概念 函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型产生函数的特定 类型版本。 2、原理 函数模板是一个蓝图,它本身并不是函数,是编译器用…

【学习】如何高效地进行集成测试

在软件开发的过程中,测试环节至关重要。而在这其中,集成测试更是保证软件质量的关键步骤之一。本文将探讨如何高效地进行集成测试,以确保软件的稳定性和可靠性。 一、什么是集成测试 集成测试是指在单元测试的基础上,将模块按照设…

opencv可视化图片-----c++

可视化图片 #include <opencv2/opencv.hpp> #include <opencv2/core.hpp> #include <filesystem>// 将数据类型转换为字符串 std::string opencvTool::type2str(int type) {std::string r;uchar depth type & CV_MAT_DEPTH_MASK;uchar chans 1 (typ…

Redis入门到通关之Redis网络模型-用户空间和内核态空间

文章目录 欢迎来到 请回答1024 的博客 &#x1f353;&#x1f353;&#x1f353;欢迎来到 请回答1024的博客 关于博主&#xff1a; 我是 请回答1024&#xff0c;一个追求数学与计算的边界、时间与空间的平衡&#xff0c;0与1的延伸的后端开发者。 博客特色&#xff1a; 在我的…

【行为型模式】解释器模式

一、解释器模式概述 解释器模式定义&#xff1a;给分析对象定义一个语言&#xff0c;并定义该语言的文法表示&#xff0c;再设计一个解析器来解释语言中的句子。也就是说&#xff0c;用编译语言的方式来分析应用中的实例。这种模式实现了文法表达式处理的接口&#xff0c;该接口…

STM32中的PWM

一、介绍 二、制作一个呼吸灯的效果&#xff08;使用PWM&#xff09; 原理是中心对齐的方式 学会分析复用管脚&#xff08;根据手册&#xff09; 配置 更正:是 最后一个输出的模式 最后生成代码 三、代码 要修改的业务代码 改代码&#xff0c;实现呼吸灯

科技赋能无人零售

科技赋能无人零售&#xff0c;使其具备以下独特优势&#xff1a; 1. 全天候无缝服务 &#xff1a;无人零售店依托科技&#xff0c;实现24小时不间断运营&#xff0c;不受人力限制&#xff0c;满足消费者随时购物需求&#xff0c;尤其惠及夜间工作者、夜猫子及急需购物者&…

聊聊.NET Core处理全局异常有那些方法

简述 处理全局异常的方法有IExceptionFilter&#xff08;异常处理&#xff09;&#xff0c;使用中间件异常处理&#xff0c;使用框架自带异常中间件等。考点 考察对异常处理方式的熟悉程度和广度&#xff0c;以及对中间件、过滤器熟练程度。 下面分别具体介绍三种处理异常的…