应用共享目录配置

从API版本23开始,系统支持配置共享目录。在应用文件分享场景中,开发者可配置共享目录范围,以防止应用敏感数据泄露。仅共享目录中的文件可供用户分享给其他应用查阅。

从API版本26.0.0开始,系统支持配置应用捐献沙箱目录。捐献目录为共享目录的子目录。应用配置捐献目录后,系统应用可访问并操作其中的文件数据。仅支持在手机(Phone)、平板(Tablet)上配置捐献目录。

以文件管理器上的交互体验为例,应用配置了捐献目录后,用户在手机、平板设备上可通过文件管理器查阅、修改捐献目录中的文件。

开发步骤

  1. 开发者可在应用模块级配置文件src/main/module.json5的module标签中添加shareFiles标签,以实现对沙箱共享目录权限的限制。若未配置共享目录,则默认允许应用共享其自身沙箱内的文件。

    shareFiles标签

    {
      "module": {
        // ...
        "shareFiles": "$profile:share_files", // 资源配置,指向profile下面定义的配置文件share_files.json
        // ...
      }
    }
    
  2. 在开发视图的resources/base/profile下面定义配置文件share_files.json,以标识当前模块所有共享路径的权限信息。

    文件名share_files可修改为任意合法文件名,但需要和shareFiles标签配置的文件名一致。

    share_files标签说明

    属性名称 含义 数据类型 必填
    scopes 允许共享的范围,详见scopes标签说明。 对象数组
    sharingOSPath 应用捐献给操作系统的沙箱目录,取值必须为scopes列表中已配置的path值。未配置该字段则表示不向操作系统捐献目录,系统应用如文件管理器、FilePicker等将无法查看应用捐献的沙箱目录。
    起始版本: 26.0.0
    字符串
    sharingOSSubpath 应用捐献给操作系统的沙箱目录的子目录。仅当sharingOSPath配置时必填,长度不超过32,将"sharingOSPath"+"sharingOSSubpath"拼接后的路径,作为捐献给操作系统的目录,""空串代表直接捐献sharingOSPath,有字符则以/开头,不允许有'.'、'..'、'\0'字符。
    起始版本: 26.0.0
    字符串
    sharingOSPermission 应用捐献给操作系统的沙箱目录的访问权限。仅当sharingOSPath配置时必填,权限必须是scopes中对应路径permission的一个子集,不可超出原配置权限。
    起始版本: 26.0.0
    字符串

    说明:

    应用更新时如涉及配置变更,将依据新配置进行管控,已分享文件的临时权限不受影响。

    应用向操作系统捐献沙箱目录时,sharingOSPath、sharingOSSubpath、sharingOSPermission三项为必填配置。

    scopes标签说明

    属性名称 含义 数据类型 必填
    path 共享路径配置,当前仅支持el2目录,scopes中的path不可重复。支持的取值如下:
    - /base/files
    - /base/preferences
    - /base/haps
    string scopes存在时必填
    permission 共享路径权限。支持的取值如下:
    - r:只读。
    - r+w:读写。
    string scopes存在时必填

    share_files.json示例:

    {
      "share_files": {
        "scopes": [
          {
            "path": "/base/files",
            "permission": "r+w"
          }
        ],
        "sharingOSPath" : "/base/files",
        "sharingOSSubpath" : "/subdir",
        "sharingOSPermission": "r"
      }
    }