android 调用wps打开文档并感知保存事件

需求场景

在项目开发中会碰到需要调用WPS打开Word,Excel,Ppt等Office系列文档的情况,网上目前少有正式介绍如何调用相关API打开文档,并实现文档编辑后回传给三方应用,本人在逛WPS社区时发现

解锁WPS二次开发新世界:Android开发用户专属极速接入秘籍!通过此文介绍的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: 打开:一次打开一个文档

参考示例代码

复制代码
//1.------------ 将filePath 转换成FileUri----------
String filePath = "/storage/emulated/0/Android/data/cn.wps.sdk.demo/files/document/123.docx";
Uri fileUri; // Android 7.0(包含)之后使用FileProvider,之前使用file协议
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
// File转化为FileProvider类型的Uri,对应FileProvider名字必须AndroidManifest.xml中定义匹配
  fileUri = FileProvider.getUriForFile(context, getPackageName() + ".fileprovider",     new File(filePath));
  } else{
      fileUri = Uri.fromFile(filePath);
  }
//2.------------ 调用WPS SDK 相关接口打开文档----------       
FileApi fileApi = WpsSdk.getInstance().getService(FileApi.class);
if (FileApi != null) {
    fileApi.openFile(context, fileUri);
}

代码补充说明:

  • 详细fileuri介绍请参考FileUri授权
  • 详细代码请参考Demo中的cn.wps.sdk.demo.activity.SingleOpenActivity#openFile

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

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

复制代码
FileApi fileApi = WpsSdk.getInstance().getApi(FileApi.class);
if (fileApi != null) {
    fileApi.addEventListener(SingleOpenActivity.this, ApiEvent.DocumentAfterSave, new EventListener() {
        @Override
        public void onEvent(String eventName, 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);
            Utils.showToast(SingleOpenActivity.this, "文档保持路径:" + currentFileUri);
        }
    });
    //注意在调用文档打开之前进行注册
    fileApi.openFile(this, fileUri, bundle);
}

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

相关推荐
淮北4942 小时前
vim学习进阶
学习·编辑器·vim
xiangpanf4 小时前
Laravel 10.x重磅升级:五大核心特性解析
android
robotx7 小时前
安卓线程相关
android
消失的旧时光-19437 小时前
Android 面试高频:JSON 文件、大数据存储与断电安全(从原理到工程实践)
android·面试·json
dalancon8 小时前
VSYNC 信号流程分析 (Android 14)
android
dalancon8 小时前
VSYNC 信号完整流程2
android
dalancon8 小时前
SurfaceFlinger 上帧后 releaseBuffer 完整流程分析
android
用户69371750013849 小时前
不卷AI速度,我卷自己的从容——北京程序员手记
android·前端·人工智能
程序员Android10 小时前
Android 刷新一帧流程trace拆解
android
墨狂之逸才10 小时前
解决 Android/Gradle 编译报错:Comparison method violates its general contract!
android