HarmonyOS 鸿蒙Next cameraPicker.PickerResult 设置 saveUri后拍照处理不成功
HarmonyOS 鸿蒙Next cameraPicker.PickerResult 设置 saveUri后拍照处理不成功
cameraPicker.PickerResult 设置 saveUri后拍照处理不成功 将saveUri设置为缓存路径,同时申请并同意了ohos.permission.WRITE_IMAGEVIDEO权限,拍照后返回resultCode:-1。不设置saveUri可以成功拍照并返回resultUri。这个要咋弄,有劳大佬们
2 回复
参考demo如下:
import picker from '[@ohos](/user/ohos).multimedia.cameraPicker'
import camera from '[@ohos](/user/ohos).multimedia.camera';
import common from '[@ohos](/user/ohos).app.ability.common';
import { BusinessError } from '[@ohos](/user/ohos).base';
import fileuri from '[@ohos](/user/ohos).file.fileuri';
import fs from '[@ohos](/user/ohos).file.fs';
let mContext = getContext(this) as common.Context;
class CameraPosition {
cameraPosition : camera.CameraPosition
saveUri :string
constructor(cameraPosition : camera.CameraPosition,saveUri:string) {
this.cameraPosition = cameraPosition
this.saveUri = saveUri
}
}
let pathDir = getContext().filesDir;
let filePath = pathDir + `/${new Date().getTime()}.jpg`
fs.createRandomAccessFileSync(filePath, fs.OpenMode.CREATE);
let uri = fileuri.getUriFromPath(filePath);
async function demo() {
try {
let pickerProfile = new CameraPosition(camera.CameraPosition.CAMERA_POSITION_BACK,uri)
//前置摄像机传CAMERA_POSITION_FRONT,后置摄像机传CAMERA_POSITION_BACK,saveuri传想存到对应沙箱的uri
let pickerResult: picker.PickerResult = await picker.pick(mContext, [picker.PickerMediaType.PHOTO, picker.PickerMediaType.VIDEO], pickerProfile);
console.log("the pick pickerResult is:" + JSON.stringify(pickerResult));
} catch (error) {
let err = error as BusinessError;
console.error(`the pick call failed. error code: ${err.code}`);
}
}
[@Entry](/user/Entry)
[@Component](/user/Component) struct Photopage{
build(){
Column(){
Button('拉起后置摄像头').onClick(()=>{ demo() })
}
}
}
针对您提到的HarmonyOS鸿蒙系统中Next cameraPicker的PickerResult
设置saveUri
后拍照处理不成功的问题,这通常可能是由于权限设置不当、URI格式错误或处理逻辑有误所致。以下是一些可能的检查点和解决方向:
-
权限检查:确保您的应用已正确申请并获得了存储权限和相机权限。在HarmonyOS中,这些权限通常在
config.json
文件中声明,并在运行时通过API请求。 -
URI格式:验证
saveUri
的格式是否正确。它应该是一个有效的文件URI,指向应用私有存储区域或用户授予访问权限的公共存储位置。 -
处理逻辑:检查
PickerResult
回调中的处理逻辑,确保在拍照完成后正确读取并处理了URI指向的文件。注意,如果文件未成功创建或写入,URI可能是无效的。 -
日志调试:利用HarmonyOS提供的日志工具,打印关键变量和错误日志,帮助定位问题所在。
-
版本兼容性:确认您的开发环境和目标设备运行的HarmonyOS版本是否兼容当前的cameraPicker API。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html