HarmonyOS鸿蒙Next中从图库读取数据报内部错误

HarmonyOS鸿蒙Next中从图库读取数据报内部错误 从图库读取数据报内部错误

getDefaultAlbums(context: common.UIAbilityContext): Promise<photoAccessHelper.Album> {
  let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);
  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
  predicates.in('album_name', ['aaa', 'bbb']);
  let fetchOptions: photoAccessHelper.FetchOptions = {
    fetchColumns: [],
    predicates: predicates
  };
  const albums = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.ANY, fetchOptions);
  if (albums.getCount() > 0) {
  const albumData = await albums.getFirstObject();
  return albumData;
}

更多关于HarmonyOS鸿蒙Next中从图库读取数据报内部错误的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

如果不申请权限会报错140000011,加了权限就可以(ohos.permission.READ_IMAGEVIDEO、ohos.permission.WRITE_IMAGEVIDEO 等权限),然后给个可以获取到相册的Demo:

import { picker } from '@kit.CoreFileKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { photoAccessHelper } from '@kit.MediaLibraryKit';
import { dataSharePredicates } from '@kit.ArkData';
import { abilityAccessCtrl, PermissionRequestResult, Permissions } from '@kit.AbilityKit';

@Entry
@Component
struct Index {
  @State selectedUri: string = '';

  aboutToAppear(): void {
    let permissions: Array<Permissions> = [
      'ohos.permission.READ_IMAGEVIDEO'
    ];
    let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
    atManager.requestPermissionsFromUser(getContext(this), permissions).then((data: PermissionRequestResult) => {
      let grantStatus: Array<number> = data.authResults;
      let length: number = grantStatus.length;
      for (let i = 0; i < length; i++) {
        if (grantStatus[i] != 0) {
          // 用户拒绝授权,提示用户必须授权才能访问当前页面的功能,并引导用户到系统设置中打开相应的权限
          return;
        }
      }
      console.info(` Success to request permissions from user. authResults is ${grantStatus}.`);
    }).catch((err: BusinessError) => {
      console.error(` Failed to request permissions from user. Code is ${err.code}, message is ${err.message}`);
    })
  }

  async getDefaultAlbums(context: Context) {
    try {
      let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);
      let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
      predicates.in(photoAccessHelper.AlbumKeys.ALBUM_NAME, ['test', '我的']);
      let fetchOptions: photoAccessHelper.FetchOptions = {
        fetchColumns: [],
        predicates: predicates
      };
      const albums = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.ANY, fetchOptions);
      if (albums.getCount() > 0) {
        const albumData = await albums.getFirstObject();
        console.debug('获取相册成功:' + albumData.albumName)
        //return albumData;
      } else {
        console.debug('获取相册失败:')
        //throw new Error('相册不存在')
        //return albumData;
      }
    } catch (error) {
      console.error('getAlbums fail' + JSON.stringify(error))
    }
  }

  build() {
    Column() {
      Image(this.selectedUri)
        .width('100%')
        .height(600)

      Button("选择相册").width(150).height(35).margin(8)
        .onClick(() => {
          this.getDefaultAlbums(getContext(this))
        })
    }
  }
}

更多关于HarmonyOS鸿蒙Next中从图库读取数据报内部错误的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,从图库读取数据报内部错误可能是由于以下原因:

  1. 权限问题:应用可能未正确申请或获取访问图库所需的权限。确保应用在config.json中声明了ohos.permission.READ_MEDIA权限,并在运行时请求用户授权。

  2. URI解析错误:读取图库数据时,URI可能未正确解析或格式不符合预期。检查URI的生成和解析逻辑,确保其符合系统要求。

  3. 文件路径问题:图库中的文件路径可能不存在或无法访问。验证文件路径是否正确,并确认文件是否被移动或删除。

  4. 系统资源限制:系统资源不足可能导致读取操作失败。确保设备有足够的存储空间和内存。

  5. API使用错误:可能使用了错误的API或API参数。查阅官方文档,确认API的使用方法和参数是否符合要求。

  6. 系统版本兼容性:鸿蒙Next的某些API或行为可能与旧版本不同,导致兼容性问题。确保应用适配当前系统版本。

  7. 数据损坏:图库中的文件可能损坏,导致无法读取。尝试读取其他文件,确认是否为特定文件问题。

  8. 第三方库冲突:如果使用了第三方库进行图库操作,可能存在库与系统API的冲突。检查第三方库的兼容性和版本。

  9. 日志分析:通过HiLog查看详细的错误日志,定位具体错误原因。

  10. 系统更新问题:系统更新可能导致某些API行为变化。确认系统是否为最新版本,并检查更新日志。

根据错误日志和具体场景,逐一排查上述问题,定位并解决读取图库数据报内部错误的原因。

在HarmonyOS鸿蒙Next中,从图库读取数据时遇到“内部错误”可能是由于以下原因:

  1. 权限问题:确保应用已获取读取存储的权限。
  2. 路径错误:检查文件路径是否正确,确保文件存在且可访问。
  3. 资源未释放:确认之前的资源已正确释放,避免资源冲突。
  4. 系统限制:某些API可能受系统版本或设备限制,检查API兼容性。
  5. 代码逻辑:调试代码,确认无逻辑错误或异常处理不当。

建议逐一排查,确保权限、路径、资源管理等方面均无问题。

回到顶部