如何为指定用户的指定应用设置水印策略
==================

#### 问题现象

使用[securityManager.setWatermarkImage](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-enterprise-securitymanager#securitymanagersetwatermarkimage14)为指定用户的指定应用设置水印策略时，一直报401错误。

#### 背景知识

[securityManager.setWatermarkImage](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-enterprise-securitymanager#securitymanagersetwatermarkimage14)：为指定用户的指定应用设置水印策略。本接口适用于企业场景下为三方应用设置水印，降低企业信息泄露风险。不建议为系统应用设置水印（如：桌面应用），可能存在未知异常。

[应用沙箱路径和真实物理路径的对应关系](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/app-sandbox-directory#应用沙箱路径和真实物理路径的对应关系)：在应用沙箱路径下读写文件，经过映射转换，实际读写的是真实物理路径中的应用文件。

#### 问题定位

有问题的操作步骤如下：设置水印的方法参考[securityManager.setWatermarkImage](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-enterprise-securitymanager#securitymanagersetwatermarkimage14)接口示例，将图片来源换成沙箱图片。

accountId和source参数填写错误是出现401错误的常见原因，参考以下步骤排查：

1.  accountId参数不能传不存在的用户id，可以通过[getOsAccountLocalId](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-osaccount#getosaccountlocalid9-1)获取。
2.  source参数表示图像路径或者image.PixelMap对象。
    *   图像路径为应用沙箱路径(应用沙箱路径和真实路径的对应关系可参见:[应用沙箱路径和真实物理路径的对应关系](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/app-sandbox-directory#应用沙箱路径和真实物理路径的对应关系))等应用有权限访问的路径。
    *   image.PixelMap表示图像对象，图像像素占用大小不得超过500KB。

经过上述排查，将图片存放至物理路径：/data/app/el1/<USERID>/base/<PACKAGENAME>/test.png，并在传参时使用对应的沙箱路径：/data/storage/el1/base/test.png，问题得以解决。

#### 分析结论

1.  正确设置接口的accountId参数，不能传不存在的用户id。
2.  source参数表示图像路径或者image.PixelMap对象，需要将图片存入正确的物理路径，并保证图像像素占用大小不得超过500KB。

#### 修改建议

将图片存放至物理路径：/data/app/el1/<USERID>/base/<PACKAGENAME>/test.png，并在传参时使用对应的沙箱路径：/data/storage/el1/base/test.png。