HarmonyOS 使用相机Picker拍照后,读取相片提示无权限,这个要怎么处理?

如题:HarmonyOS 使用相机Picker拍照后,读取相片提示无权限,这个要怎么处理?

阅读 548
1 个回答

这边使用官网上的demo,可以成功获取到拍照后的URI,调用fileIo.openSync方法也是成功的,日志信息如下:

the pick pickerResult is:{"resultCode":0,"resultUri":"file://media/Photo/3/IMG_1721732169_000/IMG_20240723_185429.jpg","mediaType":"photo"} 

demo如下:

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

let context = getContext(this) as common.Context;

async function startCameraPicker() {
  try {
    let pickerProfile: cameraPicker.PickerProfile = {
      cameraPosition: camera.CameraPosition.CAMERA_POSITION_BACK
    };
    let pickerResult: cameraPicker.PickerResult = await cameraPicker.pick(context,
      [cameraPicker.PickerMediaType.PHOTO, cameraPicker.PickerMediaType.VIDEO], pickerProfile);
    console.log("the pick pickerResult is:" + JSON.stringify(pickerResult));
    let file = fileIo.openSync(pickerResult.resultUri,fileIo.OpenMode.READ_ONLY);
    console.log("the pick file is:" + file);
  } catch (error) {
    let err = error as BusinessError;
    console.error(`the pick call failed. error code: ${err.code}`);
  }
}

@Entry
@Component
struct linshi {
  build() {
    Column() {
      Button("点击拉起相机")
        .onClick(() => startCameraPicker())
    }
    .width("100%")
    .height("100%")
    .justifyContent(FlexAlign.Center)
    .alignItems(HorizontalAlign.Center)
  }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进