前言
当前市面上几乎所有的打印软件都支持WPS/微信/QQ/钉钉的文档进行打印,但是其实现方案均为需要引导用户进入对应的app选择分享或发送到打印app进行打印,其根本原因在于打印app无法直接获取到WPS/微信/QQ/钉钉等应用内的文档列表,且由于现有的android11之后的文件架构,更是无法获取到应用私有文件目录下的文档
市面上大部分打印应用现状:
已接入SDK的某打印应用现状:
那么如何直接获取到WPS内的文档呢?
现在借助于WPS提出的二次开发sdk,可以轻松的从任何app内选择WPS的文档进行打印,甚至可以选择WPS的云文档进行打印,相比之前的操作方案需要7-8步完成,新的获取逻辑将直接降低用户的操作至一步完成,大大降低操作繁琐导致的用户放弃操作的情况。下面先看看Demo效果吧~
效果展示
如图所示,点击按钮之后,将直接打开WPS的文档选择页,支持最近文档/云文档/本地文档三种方式,选择文件后可以直接返回到原有的app,操作无割裂感,顺滑无比,那么不废话了,直接开干!
实现步骤
通过WPS社区文章: 解锁WPS二次开发新世界:Android开发用户专属极速接入秘籍!获取相关WPS-SDK集成资料,然后一步步实现完成,先将如何获取WPS端内文档详细步骤总结如下:
添加依赖库
将WPS提供集成资源压缩包里面libs相关的aar文件集成到自己的工程中,具体申请方式,参考:
【金山文档】 WPS SDK集成资料申请
https://365.kdocs.cn/l/clq8BwkjL5lF
SDK初始化
在自己工程Application的onCreate方法中调用SDK的初始化Api, 参考如下
SdkConfig config = new SdkConfig.Builder()
//开启日志开关
.setEnableDebug(true)
//是否禁止弹出安装更新提示框
.build();
//初始化
WpsSdk.getInstance().init(this,config);
调用获取WPS端内文件功能接口
调用相关API接口,调起WPS文件选择器
参考如下:
FileManagerApi fileManagerApi = WpsSdk.getInstance().getApi(FileManagerApi.class);
if (fileManagerApi != null) {
fileManagerApi.selectFiles(MainActivity.this, new ResultCallback<Uri>() {
@OverridepublicvoidonCallback(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();
}
}
});
}
PS: 详细可参考 WpsSdkDemo工程 中MainActivity中的selectWpsFiles方法
至此,如何实现在打印应用中集成WPS-SDK调用WPS文档选择器的功能完成,是不是超级简单,而且体验完全可以提升一个量级,如果能够帮助到您,请动动发财的小手来个一键三连💪,老铁们有兴趣可以加Q群:250325397,吹牛摸鱼嗨起来!