调用系统相机,调用系统相机拍照后,结果没有带回应用中,app进程也没了

调用系统相机拍照后,结果没有带回应用中,app进程也没了。

async takePhotoddf(context:Context) { 
  await abilityAccessCtrl.createAtManager().requestPermissionsFromUser(context, ['ohos.permission.CAMERA', 'ohos.permission.READ_MEDIA']) 
  let contextww = context as common.UIAbilityContext 
  let result = await contextww.startAbilityForResult({ action: "ohos.want.action.imageCapture" }) 
  // 照片uri 
  console.error(this.TAG, 'PhotoViewPicker result uri: ' + result.want.uri ); 
} 
/** 
 * 拍照 
 */ 
public async takePhoto(context: common.UIAbilityContext): Promise<MediaBean> { 
 
 
  let want = { 
    'uri': '', 
    'action': wantConstant.Action.ACTION_IMAGE_CAPTURE, 
    'parameters': {}, 
  }; 
  return context.startAbilityForResult(want) 
  .then((result) => { 
  console.info(this.TAG, `startAbility call back , ${JSON.stringify(result)}`); 
if (result.resultCode === 0 && result.want && result.want.uri !=='') { 
  //拍照成功 
  console.info(this.TAG, 'takePhoto successfully, takePhotoResult uri: ' + result.want.uri); 
  return result.want.uri; 
} 
}).catch((error) => { 
  console.info(this.TAG, `startAbility error , ${JSON.stringify(error)}`); 
  return error; 
}).then(async (uri: string) => { 
  const mediaBean = await this.buildMediaBean(uri); 
  return mediaBean; 
}); 
}
HarmonyOS
2024-11-13 11:56:30
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
superinsect

​拍照后返回原应用,需要在want里的parameters里加上需要返回的包名信息。

拍照结果图存在 result.want.parameters[‘resourceUri’]里。

样例代码:​

import { BusinessError } from '@ohos.base'; 
import wantConstant from '@ohos.ability.wantConstant'; 
import common from '@ohos.app.ability.common'; 
 
@Entry 
@Component 
struct Index { 
 
  context = getContext(this) as common.UIAbilityContext 
  private TAG:string = 'takePhoto:' 
  @State url: string = '' 
  /** 
   * 拍照 
   */ 
  async takePhoto(context: common.UIAbilityContext) { 
 
    let want: object =new Object({ 
      action: wantConstant.Action.ACTION_IMAGE_CAPTURE, 
      parameters: new Object({callBundleName:"com.example.myapplication",}), 
    }); 
    return context.startAbilityForResult(want) 
      .then((result) => { 
        console.info(this.TAG, `startAbility call back , ${JSON.stringify(result)}`); 
        if (result.want != undefined && result.want.parameters != undefined && 
          result.want.parameters['resourceUri']!== undefined) { 
          this.url = result.want.parameters['resourceUri'].toString()//获取相片uri数据 
          //拍照成功 
          console.info(this.TAG, 'takePhoto successfully, takePhotoResult uri: ' + result.want.parameters['resourceUri']); 
        } 
      }).catch((error:BusinessError) => { 
        console.info(this.TAG, `startAbility error , ${JSON.stringify(error)}`); 
      }); 
  } 
 
 
  build() { 
    Column() { 
      Row() { 
        Button('点我').onClick(() => { 
          this.takePhoto(this.context); 
        }) 
      }.height('100%') 
    }.width('100%') 
  } 
}
分享
微博
QQ
微信
回复
2024-11-13 17:00:09
相关问题
如何调用系统相机拍照
1677浏览 • 1回复 待解决
如何调用系统相机拍照、录视频?
360浏览 • 1回复 待解决
有哪位知道怎样调用系统相机拍照
1849浏览 • 1回复 待解决
鸿蒙可以直接调用系统相机吗?
8658浏览 • 1回复 待解决
harmonyOS基于api9如何调用相机拍照
3867浏览 • 1回复 待解决
HarmonyOS APP无法打开相机拍照
429浏览 • 1回复 待解决
如何从app跳转到系统相机
5442浏览 • 1回复 已解决
HarmonyOS 相机调用失败
169浏览 • 1回复 待解决
如何调用系统拍照并获取图片
665浏览 • 1回复 待解决
请问大家有没有ArkUI调用相机的例子
4472浏览 • 1回复 待解决