首页 > 其他分享 >WPS二次开发系列:如何对打开文档路径FileUri授权

WPS二次开发系列:如何对打开文档路径FileUri授权

时间:2024-03-27 10:58:47浏览次数:23  
标签:xml 打开文档 filePath Uri WPS 二次开发 Android FileProvider fileUri

1. 什么是FileProvider

若要安全地将应用中的文件提供给其他应用,您需要配置应用,以内容 URI 的形式提供文件的安全句柄。Android FileProvider 组件会根据您在 XML 中指定的内容生成文件的内容 URI。

这部分知识是Android FileProvider通用知识,详细请参考FileProvider

2. Demo参考

2.1 在项目工程的AndroidManifest.xml中定义FileProvider

如Demo所示

注意事项:

  • 注意这里authorities 一般可以定义为 包名.fileprovider, 这里在后面集成代码中要用到
  • 定义file_paths.xml 这个文件会定义文件的实际路径和映射成fileuri的内容路径的规则,详细请参考Android 官方FileProvider

2.2 file_paths.xml 定义参考

如WPS-SDK Demo所见

2.3 在代码中使用

将普通的 filePath 转换成 fileuri

 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, "cn.wps.sdk.demo.fileprovider", new File(filePath));
} else{
    fileUri = Uri.fromFile(filePath);
}

2.4 完整的打开文档参考

如Demo所见

//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, "cn.wps.sdk.demo.fileprovider", new File(filePath));
} else{
    fileUri = Uri.fromFile(filePath);
}
//2.------------ 调用WPS SDK 相关接口打开文档----------       
FileService fileService = WpsSdk.getInstance().getService(FileService.class);
if (fileService != null) {
    fileService.openFile(context, fileUri);
}

上面示例代码可以参考FilePath和fileUri的变化

filePath : /storage/emulated/0/Android/data/cn.wps.sdk.demo/files/document/123.docx
fileUri: content://cn.wps.sdk.demo.fileprovider/myprovider/files/document/123.docx

结合上面file_paths.xml和fileProvider的定义能够更好理解这种变化规则

标签:xml,打开文档,filePath,Uri,WPS,二次开发,Android,FileProvider,fileUri
From: https://blog.csdn.net/weixin_51832365/article/details/137070760

相关文章

  • Java企业电子招投标系统源代码,支持二次开发,采用Spring cloud框架
    在数字化采购领域,企业需要一个高效、透明和规范的管理系统。通过采用SpringCloud、SpringBoot2、Mybatis等先进技术,我们打造了全过程数字化采购管理平台。该平台具备内外协同的能力,通过待办消息、招标公告、中标公告和信息发布等功能模块,实现了对供应商的集中管理和风险控制......
  • Java版企业电子招投标系统源代码,支持二次开发,采用Spring cloud技术
     在数字化时代,采购管理也正经历着前所未有的变革。全过程数字化采购管理成为了企业追求高效、透明和规范的关键。该系统通过SpringCloud、SpringBoot2、Mybatis等先进技术,打造了从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通过待办消息、招标公告、......
  • 高性能、可扩展、支持二次开发的企业电子招标采购系统源码
    在数字化时代,企业需要借助先进的数字化技术来提高工程管理效率和质量。招投标管理系统作为企业内部业务项目管理的重要应用平台,涵盖了门户管理、立项管理、采购项目管理、采购公告管理、考核管理、报表管理、评审管理、企业管理、采购管理和系统管理等多个方面。该系统以项目为......
  • 高性能、可扩展、支持二次开发的企业电子招标采购系统源码
     在数字化时代,企业需要借助先进的数字化技术来提高工程管理效率和质量。招投标管理系统作为企业内部业务项目管理的重要应用平台,涵盖了门户管理、立项管理、采购项目管理、采购公告管理、考核管理、报表管理、评审管理、企业管理、采购管理和系统管理等多个方面。该系统以项目......
  • SOLIDWORKS二次开发的优势和价格 慧德敏学
    在当今数字化时代,各行各业都在不断追求创新和效率的提升。作为一款广泛应用于工程设计领域的软件,SOLIDWORKS在市场上占据着重要地位。然而,对于一些特定行业的用户来说,SOLIDWORKS的功能可能无法完全满足他们的需求。为了解决这个问题,SOLIDWORKS提供了二次开发的功能,让用户能够根据......
  • wps 根据值 自动复制另一个表格 多行过来
    表格输入机种和数量后,右边自动出现此机种下所有的物料和新,算出需求量和欠料情况,负数变红色, B1中输入机种名或者下拉选择,填入数量,  BOM表中,A1输入公式   =跑欠料2!B1B2=IF(C2=$A$1,1,"") 算出相等的为1A2=IF(B2="","",SUM(B2:B990))累计1 转换成序列号,这里......
  • saltstack的二次开发
    1.Grains的二次开发在master上添加Grains,且同步给minion。注意:只能从master同步给minion,而不能从master通过syndic同步给minion。在master的file_roots目录下建_grains,在_grains目录下写grains的py文件,用return返回就可以拉vimmy_grains.pydefmy_grains():'''My......
  • WPS WORD EXCEL 不合并显示
    WPSWORDEXCEL不合并显示 版本:WPS12,下载时间约是2023年。 1.在开始菜单里找到WPSOFFICE-配置工具2.点击“高级(A)”。3.在“其他选项”选项卡中,点击“切换到旧版的多组件模式”。4.选择“多组件模式”,然后确定。11......
  • Revit二次开发之 对象的隐藏与显示
    在revit开发中,我们经常要对特定元素进行演示和隐藏,但是由于隐藏的有多种不同的情况,我们来分析分析不同需要下的隐藏如何操作。1、隔离   通过隐藏和显示,能保证构件在任何区域都无法呈现,其API如下:IsolateCategoriesTemporary  隔离多个类别IsolateCategoryTemporary......
  • 高性能、可扩展、支持二次开发的企业电子招标采购系统源码
    在数字化时代,企业需要借助先进的数字化技术来提高工程管理效率和质量。招投标管理系统作为企业内部业务项目管理的重要应用平台,涵盖了门户管理、立项管理、采购项目管理、采购公告管理、考核管理、报表管理、评审管理、企业管理、采购管理和系统管理等多个方面。该系统以项目为......