HarmonyOS 鸿蒙Next:使用cameraPicker.pick拍照并设置照片存放至沙箱目录而非图库
HarmonyOS 鸿蒙Next:使用cameraPicker.pick拍照并设置照片存放至沙箱目录而非图库
关于HarmonyOS 鸿蒙Next:使用cameraPicker.pick拍照并设置照片存放至沙箱目录而非图库的问题,您也可以访问:https://www.itying.com/category-93-b0.html 联系官网客服。
需要用fileUri.getUriFromPath(saveUri)将沙箱路径转化
export async function getPictureFromCamera(event: OnShowFileSelectorEvent) {
let context = AppStorage.get<common.UIAbilityContext>('ui_ability_context')
if (!context) {
console.error('Web onShowFileSelector: get context fail, please check AppStorage')
return
}
// 拍照后,将文件写入沙箱temp目录(需先创建该文件,否则无法成功写入)
let saveUri = context.tempDir + ‘/’ + util.generateRandomUUID() + ‘.png’
try {
let file = fs.openSync(saveUri, fs.OpenMode.CREATE | fs.OpenMode.READ_WRITE)
fs.closeSync(file)
} catch (e) {
}
let pickerProfile: cameraPicker.PickerProfile = {
cameraPosition: camera.CameraPosition.CAMERA_POSITION_BACK,
saveUri: fileUri.getUriFromPath(saveUri) // 将沙箱路径转化为系统可识别的路径
}
let pickerMediaTypes: cameraPicker.PickerMediaType[] = [
cameraPicker.PickerMediaType.PHOTO
]
let pickerResult: cameraPicker.PickerResult = await cameraPicker.pick(context, pickerMediaTypes, pickerProfile)
event?.result.handleFileList([pickerResult.resultUri])
}
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>
HarmonyOS的超级终端功能让我实现了真正的设备自由,大爱!
找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17
这边在录制视频的时候也遇到了同样的问题。通过 open 创建对应空文件也不行。
fs.openSync(path, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE | fs.OpenMode.TRUNC)
//调用 picker api
//fs.close(path)
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>
最终 PickerResult 中返回的uri好像还是 系统图库里面的uri,不是传入的应用沙盒路径。而自行创建的文件大小也是0。
感觉又是系统特殊行为,跟文档对不上的。。。
saveUri: this.context.filesDir + “Pictrue/ocr”,我设置了这个之后,图片并没有存到这个目录,并且返回的图片resultUri也成空了
貌似要先创建这个具体的文件(空文件)才行
确实需要先创建具体的文件才行