WPS官方提供了便于移动第三方应用快速接入WPS文档能力的SDK,通过WPS-SDK第三方应用能够实现第三方应用和WPS应用进行交互,从而使用WPS的文档能力。
通过SDK可以调起WPS文件选择,选择WPS端内文档从而将文档返回给第三方应用
https://365.kdocs.cn/l/clq8BwkjL5lF
获取SDK集成相关物料包含
详见:https://365.kdocs.cn/l/clq8BwkjL5lF
在自己项目工程中导入wps-sdk依赖库(wps_sdk.aar)
dependencies { implementation fileTree(include: ['*.jar', '*.aar'], dir:'libs') //或者 // implementation files("/libs/wps-sdk-xxx.aar") ..... }
在第三方应用Application中的onCreate方法中调用
调用 WpsSdk.getInstance().init(…)进行初始化
WpsSdk.getInstance().init(…)进行初始化
参考示例
public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); SdkConfig config = new SdkConfig.Builder() //开启日志开关 .setEnableDebug(BuildConfig.DEBUG) // .setWpsPackageName("cn.wps.moffice_i18n_TV") //传入WPS的包名,比如需要调用TV版等,默认调用WPS版本不需要设置 .build(); //初始化 WpsSdk.getInstance().init(this, config, new ResultCallback() { @Override public void onCallback(Result result) { if (result.code == 0){ Toast.makeText(MyApplication.this, "WPS SDK初始成功", Toast.LENGTH_SHORT).show(); }else { Toast.makeText(MyApplication.this, "初始化失败:"+result, Toast.LENGTH_SHORT).show(); } } }); } }
WPS SDK支持两种打开文档能力:单开和多开
一次打开一个文档
//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); }
PS:
一次可以打开多个文档
private void openFiles(List<FileItem> fileSelects){ ArrayList<Uri> uriList = new ArrayList<>(); for (FileItem fileSelect : fileSelects) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { uriList.add( FileProvider.getUriForFile(this,getPackageName()+".fileprovider", new File(fileSelect.filePath))); } else { uriList.add(Uri.fromFile(new File(fileSelect.filePath))); } } try { if (uriList.size() == 0) { return; } FileApi fileApi = WpsSdk.getInstance().getApi(FileApi.class); (fileApi == null){ return; } if (uriList.size() > 1) { //多开 fileApi.openFiles(this,uriList); } else { //单开 fileApi.openFile(this,uriList.get(0)); } } catch (Exception e) { e.printStackTrace(); } }
WPS SDK支持通过API接口新建文件能,目前支持文档类型为文字、表格、演示三组件,详细参见FileType类型
public enum FileType { /** * 文字组件(World) */ WPS, /** * 演示组件(PPT) */ WPP, /** * 表格组件(Excel) */ ET }
调用参考代码:
//新建文档参考代码 private void newFile(){ FileType fileType = FileType.WPS;//新建文字类型 FileApi fileApi = WpsSdk.getInstance().getApi(FileApi.class); if (fileApi != null) { fileApi.newFile(NewDocumentActivity.this, fileType); } }
通过SDK可以调起WPS文件选择器,选择WPS端内文档从而将文档返回给第三方应用
调用相关API接口,调起WPS文件选择器
参考示例代码:
FileManagerApi fileManagerApi = WpsSdk.getInstance().getApi(FileManagerApi.class); if (fileManagerApi != null) { fileManagerApi.selectFiles(MainActivity.this, new ResultCallback<Uri>() { @Override public void onCallback(Result<Uri> result) { if (result.code == 0) { Uri fileUri = result.data; Log.d("WpsSdkLog", "MainActivity selectFiles onCallback 转换输出路径 :fileUri=" + fileUri); //从WPS路径拷贝到第三方应用路径 // String outFile = FileUtil.copyFileFromUri(MainActivity.this, fileUri, "output"); // Log.d("WpsSdkLog", "MainActivity selectFiles onCallback: outFile=" + outFile); Toast.makeText(MainActivity.this, " 选择的文件路径:" + fileUri, Toast.LENGTH_SHORT).show(); } else { Toast.makeText(MainActivity.this, " 出现异常:" + result.msg, Toast.LENGTH_SHORT).show(); } } }); }
支持文档保存事件通知:WPS保存文档后会通知给第三方应用,形成交互闭环。
FileApi fileApi = WpsSdk.getInstance().getApi(FileApi.class); if (fileApi != null) { fileApi.addEventListener(SingleOpenActivity.this, ApiEvent.DocumentAfterSave, new EventListener() { @Override public void onEvent(String s, Bundle bundle) { String path = bundle.getString("CurrentPath"); 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, uriList.get(0), bundle); }
支持文档关闭事件通知,WPS文档关闭后会通知给第三方应用,形成交互闭环。
FileApi fileApi = WpsSdk.getInstance().getApi(FileApi.class); if (fileApi != null) { fileApi.addEventListener(SingleOpenActivity.this, ApiEvent.DocumentAfterClose, new EventListener() { @Override public void onEvent(String s, Bundle bundle) { String path = bundle.getString("CurrentPath"); Uri currentFileUri = bundle.getParcelable("CurrentFileUri"); Log.d("WpsSdk", "demo onEvent DocumentAfterClose : s=" + s + " bundle=" + bundle + " path=" + path + " currentFileUri=" + currentFileUri); Utils.showToast(SingleOpenActivity.this, "文档路径:" + currentFileUri); } }); fileApi.openFile(this, uriList.get(0), bundle); }
WPS官方提供了便于移动第三方应用快速接入WPS文档能力的SDK,通过WPS-SDK第三方应用能够实现第三方应用和WPS应用进行交互,从而使用WPS的文档能力。
1、能力范围
1.1 基础开放能力
通过SDK可以调起WPS文件选择,选择WPS端内文档从而将文档返回给第三方应用
1.2 更多能力
https://365.kdocs.cn/l/clq8BwkjL5lF
2、接入准备
获取SDK集成相关物料包含
详见:https://365.kdocs.cn/l/clq8BwkjL5lF
3、开始集成
3.1 环境配置
在自己项目工程中导入wps-sdk依赖库(wps_sdk.aar)
dependencies { implementation fileTree(include: ['*.jar', '*.aar'], dir:'libs') //或者 // implementation files("/libs/wps-sdk-xxx.aar") ..... }
3.2. SDK初始化
在第三方应用Application中的onCreate方法中调用
调用
WpsSdk.getInstance().init(…)进行初始化
参考示例
public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); SdkConfig config = new SdkConfig.Builder() //开启日志开关 .setEnableDebug(BuildConfig.DEBUG) // .setWpsPackageName("cn.wps.moffice_i18n_TV") //传入WPS的包名,比如需要调用TV版等,默认调用WPS版本不需要设置 .build(); //初始化 WpsSdk.getInstance().init(this, config, new ResultCallback() { @Override public void onCallback(Result result) { if (result.code == 0){ Toast.makeText(MyApplication.this, "WPS SDK初始成功", Toast.LENGTH_SHORT).show(); }else { Toast.makeText(MyApplication.this, "初始化失败:"+result, Toast.LENGTH_SHORT).show(); } } }); } }
3.3 功能接口调用
3.3.1 打开文档
WPS SDK支持两种打开文档能力:单开和多开
3.3.1.1单开
一次打开一个文档
//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); }
PS:
3.3.1.2 多开
一次可以打开多个文档
private void openFiles(List<FileItem> fileSelects){ ArrayList<Uri> uriList = new ArrayList<>(); for (FileItem fileSelect : fileSelects) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { uriList.add( FileProvider.getUriForFile(this,getPackageName()+".fileprovider", new File(fileSelect.filePath))); } else { uriList.add(Uri.fromFile(new File(fileSelect.filePath))); } } try { if (uriList.size() == 0) { return; } FileApi fileApi = WpsSdk.getInstance().getApi(FileApi.class); (fileApi == null){ return; } if (uriList.size() > 1) { //多开 fileApi.openFiles(this,uriList); } else { //单开 fileApi.openFile(this,uriList.get(0)); } } catch (Exception e) { e.printStackTrace(); } }
PS:
3.3.2 新建文档
WPS SDK支持通过API接口新建文件能,目前支持文档类型为文字、表格、演示三组件,详细参见FileType类型
public enum FileType { /** * 文字组件(World) */ WPS, /** * 演示组件(PPT) */ WPP, /** * 表格组件(Excel) */ ET }
调用参考代码:
//新建文档参考代码 private void newFile(){ FileType fileType = FileType.WPS;//新建文字类型 FileApi fileApi = WpsSdk.getInstance().getApi(FileApi.class); if (fileApi != null) { fileApi.newFile(NewDocumentActivity.this, fileType); } }
3.3.3 获取WPS端内文档
通过SDK可以调起WPS文件选择器,选择WPS端内文档从而将文档返回给第三方应用
调用相关API接口,调起WPS文件选择器
参考示例代码:
FileManagerApi fileManagerApi = WpsSdk.getInstance().getApi(FileManagerApi.class); if (fileManagerApi != null) { fileManagerApi.selectFiles(MainActivity.this, new ResultCallback<Uri>() { @Override public void onCallback(Result<Uri> result) { if (result.code == 0) { Uri fileUri = result.data; Log.d("WpsSdkLog", "MainActivity selectFiles onCallback 转换输出路径 :fileUri=" + fileUri); //从WPS路径拷贝到第三方应用路径 // String outFile = FileUtil.copyFileFromUri(MainActivity.this, fileUri, "output"); // Log.d("WpsSdkLog", "MainActivity selectFiles onCallback: outFile=" + outFile); Toast.makeText(MainActivity.this, " 选择的文件路径:" + fileUri, Toast.LENGTH_SHORT).show(); } else { Toast.makeText(MainActivity.this, " 出现异常:" + result.msg, Toast.LENGTH_SHORT).show(); } } }); }
3.3.4 事件通知
3.3.4.1 文档保存事件
支持文档保存事件通知:WPS保存文档后会通知给第三方应用,形成交互闭环。
参考示例代码:
FileApi fileApi = WpsSdk.getInstance().getApi(FileApi.class); if (fileApi != null) { fileApi.addEventListener(SingleOpenActivity.this, ApiEvent.DocumentAfterSave, new EventListener() { @Override public void onEvent(String s, Bundle bundle) { String path = bundle.getString("CurrentPath"); 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, uriList.get(0), bundle); }
3.3.4.2 文档关闭事件
支持文档关闭事件通知,WPS文档关闭后会通知给第三方应用,形成交互闭环。
参考示例代码:
FileApi fileApi = WpsSdk.getInstance().getApi(FileApi.class); if (fileApi != null) { fileApi.addEventListener(SingleOpenActivity.this, ApiEvent.DocumentAfterClose, new EventListener() { @Override public void onEvent(String s, Bundle bundle) { String path = bundle.getString("CurrentPath"); Uri currentFileUri = bundle.getParcelable("CurrentFileUri"); Log.d("WpsSdk", "demo onEvent DocumentAfterClose : s=" + s + " bundle=" + bundle + " path=" + path + " currentFileUri=" + currentFileUri); Utils.showToast(SingleOpenActivity.this, "文档路径:" + currentFileUri); } }); fileApi.openFile(this, uriList.get(0), bundle); }
4、联系我们
WPS SDK集成资料申请
📋 章节目录
1、能力范围 1.1 基础开放能力 1.2 更多能力 2、接入准备 3、开始集成 3.1 环境配置 3.2. SDK初始化 3.3 功能接口调用 3.3.1 打开文档 3.3.1.1单开 3.3.1.2 多开 3.3.2 新建文档 3.3.3 获取WPS端内文档 3.3.4 事件通知 3.3.4.1 文档保存事件 3.3.4.2 文档关闭事件 4、联系我们 WPS SDK集成资料申请