HarmonyOS cameraPicker相机设置图片保存路径不生效?

使用相机拍照设置保存图片路径不生效,代码如下:

let saveUri = this.context.filesDir   //换做其它路径也不行,比如:tempDir、cacheDir等
let pickerProfile: cameraPicker.PickerProfile = {
  cameraPosition: camera.CameraPosition.CAMERA_POSITION_BACK,
  saveUri        //如果不设置此保存路径,结果返回的是公共媒体路径是正常的
};
let pickerResult: cameraPicker.PickerResult = await cameraPicker.pick(this.context,[cameraPicker.PickerMediaType.PHOTO], pickerProfile)
//pickerResult.resultCode 为-1

返回结果失败,拿不到图片路径,尝试了沙盒多种目录都不行,想问下这个路径的格式、权限等有什么要求。如果不设置saveUri返回的是公共媒体路径正常。

阅读 439
1 个回答

此处需要传入具体的文件,此接口是写入数据,不能直接生成。

参考示例如下:

import { camera, cameraPicker as picker } from '@kit.CameraKit';
import { common } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { fileUri } from '@kit.CoreFileKit';
import { fileIo as fs } from '@kit.CoreFileKit';

async function demo() {
  let filesDir: string | undefined = getContext().filesDir;
  let currentTime: number = new Date().getTime();
  let tempUri = fileUri.getUriFromPath(filesDir + '/' + currentTime + ".jpg");
  await fs.open(tempUri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
  try {
    let pickerProfile: picker.PickerProfile = {
      cameraPosition: camera.CameraPosition.CAMERA_POSITION_BACK,
      saveUri: tempUri
    };
    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}`);
  }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进