HarmonyOS鸿蒙Next中选择相册怎么等待返回啊

HarmonyOS鸿蒙Next中选择相册怎么等待返回啊

let photoUris: Array<string> = ['']
try {
  let photoPick = new picker.PhotoViewPicker();
  let pickOptions = new picker.PhotoSelectOptions();
  pickOptions.maxSelectNumber = 1;
  pickOptions.MIMEType = picker.PhotoViewMIMETypes.IMAGE_TYPE;
  photoPick.select(pickOptions)
    .then((pickResult: picker.PhotoSelectResult) => {
      photoUris = pickResult.photoUris
    })
} catch (e) {
  photoUris = ['']
  console.error(e)
}
return photoUris

select还没有触发return就执行了,怎么等select返回后在执行return


更多关于HarmonyOS鸿蒙Next中选择相册怎么等待返回啊的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

你写错了 select 是异步操作,肯定不会阻塞 return

photoPick.select(pickOptions)
    .then((pickResult: picker.PhotoSelectResult) => {
      photoUris = pickResult.photoUris
    })

改成下面

let pickResult: picker.PhotoSelectResult = await photoPick.select(pickOptions)
photoUris = pickResult.photoUris

你可以了解一下 js 中的 Promise 机制

更多关于HarmonyOS鸿蒙Next中选择相册怎么等待返回啊的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


好的,我去试试,JS确实不太了解😂,

在HarmonyOS鸿蒙Next中,选择相册并等待返回可以通过使用AbilityIntent来实现。首先,你需要创建一个Intent对象,并设置其ActionIntent.ACTION_PICK,然后调用startAbilityForResult方法启动相册选择界面。在onAbilityResult方法中处理返回的结果。以下是一个简单的示例代码:

import Ability from '@ohos.application.Ability';
import Intent from '@ohos.application.Intent';

export default class MainAbility extends Ability {
    onWindowStageCreate(windowStage) {
        let intent = new Intent();
        intent.action = Intent.ACTION_PICK;
        intent.uri = 'datashare:///media/photo';
        this.startAbilityForResult(intent, 1);
    }

    onAbilityResult(requestCode, resultCode, data) {
        if (requestCode === 1 && resultCode === 0) {
            let selectedImageUri = data.uri;
            // 处理选择的图片
        }
    }
}

在这个示例中,startAbilityForResult方法用于启动相册选择界面,并等待返回结果。onAbilityResult方法用于处理返回的结果,requestCode用于标识请求,resultCode用于标识结果状态,data包含返回的数据。

在HarmonyOS鸿蒙Next中,选择相册并等待返回可以通过以下步骤实现:

  1. 调用系统相册:使用Intent启动系统相册应用,例如:

    Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
    startActivityForResult(intent, REQUEST_CODE_PICK_IMAGE);
    
  2. 处理返回结果:在onActivityResult方法中处理用户选择的图片:

    [@Override](/user/Override)
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == REQUEST_CODE_PICK_IMAGE && resultCode == RESULT_OK) {
            Uri selectedImageUri = data.getData();
            // 处理选择的图片
        }
    }
    

通过这种方式,应用可以等待用户从相册选择图片并返回结果。

回到顶部