HarmonyOS 鸿蒙Next cameraPicker.PickerResult 设置 saveUri后拍照处理不成功

发布于 1周前 作者 songsunli 来自 鸿蒙OS

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格式错误或处理逻辑有误所致。以下是一些可能的检查点和解决方向:

  1. 权限检查:确保您的应用已正确申请并获得了存储权限和相机权限。在HarmonyOS中,这些权限通常在config.json文件中声明,并在运行时通过API请求。

  2. URI格式:验证saveUri的格式是否正确。它应该是一个有效的文件URI,指向应用私有存储区域或用户授予访问权限的公共存储位置。

  3. 处理逻辑:检查PickerResult回调中的处理逻辑,确保在拍照完成后正确读取并处理了URI指向的文件。注意,如果文件未成功创建或写入,URI可能是无效的。

  4. 日志调试:利用HarmonyOS提供的日志工具,打印关键变量和错误日志,帮助定位问题所在。

  5. 版本兼容性:确认您的开发环境和目标设备运行的HarmonyOS版本是否兼容当前的cameraPicker API。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部