
本文面向 HarmonyOS 7 应用开发。涉及系统能力时以项目实际安装 SDK 的 API、权限及设备支持为准下文代码注明为局部示例不构成完整可运行工程。不是每个选图功能都需要遍历图库做报销附件时很容易先想到申请照片权限再自己写一个相册页。但用户只是要选两张发票并没有要求应用管理整个图库。把任务限定为“用户明确选中的照片”接入会更轻授权解释也更容易说清楚。HarmonyOS 提供系统 Picker。它让用户在系统界面完成选择应用取得选择结果并按对应授权规则访问资源。这里需要区分“本次能够读取”和“以后一直能够读取”。URI 是资源标识不能把它简单当成一个永久存在的沙箱路径。先做单张再扩展多张第一版建议只做图片、单选、立即预览。链路稳定后再添加多选和上传。下面是调用照片选择器的 ArkTS 局部示例需要从页面的按钮事件调用并在业务层处理错误import{photoAccessHelper}fromkit.MediaLibraryKit;asyncfunctionchooseOnePhoto():Promisestring|undefined{constoptionsnewphotoAccessHelper.PhotoSelectOptions();options.MIMETypephotoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE;options.maxSelectNumber1;constpickernewphotoAccessHelper.PhotoViewPicker();constresultawaitpicker.select(options);returnresult.photoUris.length0?result.photoUris[0]:undefined;}返回空结果时维持原来的附件不要把旧图清掉。选择接口发生异常时向用户提供重新选择入口不要把所有失败都解释为“未授权”因为资源读取和文件处理也可能失败。选图完成以后业务才刚开始可以把附件记录拆成四个字段本地业务编号、资源 URI、预览状态、上传凭据。URI 负责本地读取上传凭据负责服务器关联两者不要混用。只有服务器确认接收才把附件标成可提交。用户看到了缩略图并不代表文件已经上传。对于跨页面草稿先决定是否确实需要保留文件副本。如果需要在允许的访问范围内读取资源并保存到应用管理的目录记录来源和清理时间。不要只把临时 URI 塞进偏好存储就认为重启后必然可用持久访问应按当前 SDK 对该类资源的授权规则单独实现。多选时还要限制并发解码。十张大图同时展开成完整位图会产生远高于压缩文件大小的内存占用。列表先加载小尺寸预览点击后再读取需要的清晰度。用四个操作验收分别测试正常选图、取消选择、连续更换附件、选择后删除源文件。还要在真机上检查长图和高像素照片。预期结果是取消不会破坏旧附件换图不会出现旧预览覆盖新预览失效资源能重新选择上传失败仍保留可重试的业务记录。这一篇的交付目标很具体用户能把自己选中的一张图片可靠地变成一条可提交的附件记录。先完成这条链路再考虑更多图库能力。官方参考华为开发者文档HarmonyOS 7 新能力与开发入口