@ohos.file.photoAccessHelper (相册管理模块)(系统接口)

该模块提供相册管理模块能力,包括创建相册以及访问、修改相册中的媒体数据信息等。

说明:

  • 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
  • 当前页面仅包含本模块的系统接口,其他公开接口参见@ohos.file.photoAccessHelper (相册管理模块)

导入模块

import photoAccessHelper from '@ohos.file.photoAccessHelper';

PhotoAccessHelper

createAsset

createAsset(displayName: string, callback: AsyncCallback<PhotoAsset>): void

指定待创建的图片或者视频的文件名,创建图片或视频资源,使用callback方式返回结果。

待创建的文件名参数规格为:

  • 应包含有效文件主名和图片或视频扩展名。
  • 文件名字符串长度为1~255。
  • 文件主名中不允许出现的非法英文字符,包括:
    . .. \ / : * ? " ' ` < > | { } [ ]

系统接口:此接口为系统接口。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

需要权限:ohos.permission.WRITE_IMAGEVIDEO

参数:

参数名 类型 必填 说明
displayName string 创建的图片或者视频文件名。
callback AsyncCallback<PhotoAsset> callback返回创建的图片和视频结果。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if type displayName is not string.
13900012 Permission denied.
13900020 Invalid argument.
14000001 Invalid display name.
14000011 System inner fail.

示例:

async function example() {
  console.info('createAssetDemo');
  let testFileName: string = 'testFile' + Date.now() + '.jpg';
  phAccessHelper.createAsset(testFileName, (err, photoAsset) => {
    if (photoAsset !== undefined) {
      console.info('createAsset file displayName' + photoAsset.displayName);
      console.info('createAsset successfully');
    } else {
      console.error(`createAsset failed, error: ${err.code}, ${err.message}`);
    }
  });
}

createAsset

createAsset(displayName: string): Promise<PhotoAsset>

指定待创建的图片或者视频的文件名,创建图片或视频资源,使用Promise方式返回结果。

待创建的文件名参数规格为:

  • 应包含有效文件主名和图片或视频扩展名。
  • 文件名字符串长度为1~255。
  • 文件主名中不允许出现的非法英文字符,包括:
    . .. \ / : * ? " ' ` < > | { } [ ]

系统接口:此接口为系统接口。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

需要权限:ohos.permission.WRITE_IMAGEVIDEO

参数:

参数名 类型 必填 说明
displayName string 创建的图片或者视频文件名。

返回值:

类型 说明
Promise<PhotoAsset> Promise对象,返回创建的图片和视频结果。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if type displayName or albumUri is not string.
13900012 Permission denied.
13900020 Invalid argument.
14000001 Invalid display name.
14000011 System inner fail.

示例:

async function example() {
  console.info('createAssetDemo');
  try {
    let testFileName: string = 'testFile' + Date.now() + '.jpg';
    let photoAsset: photoAccessHelper.PhotoAsset = await phAccessHelper.createAsset(testFileName);
    console.info('createAsset file displayName' + photoAsset.displayName);
    console.info('createAsset successfully');
  } catch (err) {
    console.error(`createAsset failed, error: ${err.code}, ${err.message}`);
  }
}

createAsset

createAsset(displayName: string, options: PhotoCreateOptions, callback: AsyncCallback<PhotoAsset>): void

指定待创建的图片或者视频的文件名和创建选项,创建图片或视频资源,使用callback方式返回结果。

待创建的文件名参数规格为:

  • 应包含有效文件主名和图片或视频扩展名。
  • 文件名字符串长度为1~255。
  • 文件主名中不允许出现的非法英文字符,包括:
    . .. \ / : * ? " ' ` < > | { } [ ]

系统接口:此接口为系统接口。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

需要权限:ohos.permission.WRITE_IMAGEVIDEO

参数:

参数名 类型 必填 说明
displayName string 创建的图片或者视频文件名。
options PhotoCreateOptions 图片或视频的创建选项。
callback AsyncCallback<PhotoAsset> callback返回创建的图片和视频结果。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if type displayName is not string.
13900012 Permission denied.
13900020 Invalid argument.
14000001 Invalid display name.
14000011 System inner fail.

示例:

async function example() {
  console.info('createAssetDemo');
  let testFileName: string = 'testFile' + Date.now() + '.jpg';
  let createOption: photoAccessHelper.PhotoCreateOptions = {
    subtype: photoAccessHelper.PhotoSubtype.DEFAULT
  }
  phAccessHelper.createAsset(testFileName, createOption, (err, photoAsset) => {
    if (photoAsset !== undefined) {
      console.info('createAsset file displayName' + photoAsset.displayName);
      console.info('createAsset successfully');
    } else {
      console.error(`createAsset failed, error: ${err.code}, ${err.message}`);
    }
  });
}

createAsset

createAsset(displayName: string, options: PhotoCreateOptions): Promise<PhotoAsset>

指定待创建的图片或者视频的文件名和创建选项,创建图片或视频资源,使用Promise方式返回结果。

待创建的文件名参数规格为:

  • 应包含有效文件主名和图片或视频扩展名。
  • 文件名字符串长度为1~255。
  • 文件主名中不允许出现的非法英文字符,包括:
    . .. \ / : * ? " ' ` < > | { } [ ]

系统接口:此接口为系统接口。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

需要权限:ohos.permission.WRITE_IMAGEVIDEO

参数:

参数名 类型 必填 说明
displayName string 创建的图片或者视频文件名。
options PhotoCreateOptions 图片或视频的创建选项。

返回值:

类型 说明
Promise<PhotoAsset> Promise对象,返回创建的图片和视频结果。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if type displayName is not string.
13900012 Permission denied.
13900020 Invalid argument.
14000001 Invalid display name.
14000011 System inner fail.

示例:

async function example() {
  console.info('createAssetDemo');
  try {
    let testFileName:string = 'testFile' + Date.now() + '.jpg';
    let createOption: photoAccessHelper.PhotoCreateOptions = {
      subtype: photoAccessHelper.PhotoSubtype.DEFAULT
    }
    let photoAsset: photoAccessHelper.PhotoAsset = await phAccessHelper.createAsset(testFileName, createOption);
    console.info('createAsset file displayName' + photoAsset.displayName);
    console.info('createAsset successfully');
  } catch (err) {
    console.error(`createAsset failed, error: ${err.code}, ${err.message}`);
  }
}

createAlbum(deprecated)

createAlbum(name: string, callback: AsyncCallback<Album>): void

创建相册,使用callback方式返回结果。

待创建的相册名参数规格为:

  • 相册名字符串长度为1~255。
  • 不允许出现的非法英文字符,包括:
    . .. \ / : * ? " ' ` < > | { } [ ]
  • 英文字符大小写不敏感。
  • 相册名不允许重名。

说明:

从API version 10开始支持,从API version 11开始废弃。建议使用MediaAlbumChangeRequest.createAlbumRequest替代。

系统接口:此接口为系统接口。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

需要权限:ohos.permission.WRITE_IMAGEVIDEO

参数:

参数名 类型 必填 说明
name string 待创建相册的相册名。
callback AsyncCallback<Album> callback返回创建的相册实例。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if parameter is invalid.
13900012 Permission denied.
13900015 File exists.
13900020 Invalid argument.
14000011 System inner fail.

示例:

async function example() {
  console.info('createAlbumDemo');
  let albumName: string = 'newAlbumName' + new Date().getTime();
  phAccessHelper.createAlbum(albumName, (err, album) => {
    if (err) {
      console.error(`createAlbumCallback failed with err: ${err.code}, ${err.message}`);
      return;
    }
    console.info('createAlbumCallback successfully, album: ' + album.albumName + ' album uri: ' + album.albumUri);
  });
}

createAlbum(deprecated)

createAlbum(name: string): Promise<Album>

创建相册,使用Promise方式返回结果。

待创建的相册名参数规格为:

  • 相册名字符串长度为1~255。
  • 不允许出现的非法英文字符,包括:
    . .. \ / : * ? " ' ` < > | { } [ ]
  • 英文字符大小写不敏感。
  • 相册名不允许重名。

说明:

从API version 10开始支持,从API version 11开始废弃。建议使用MediaAlbumChangeRequest.createAlbumRequest替代。

系统接口:此接口为系统接口。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

需要权限:ohos.permission.WRITE_IMAGEVIDEO

参数:

参数名 类型 必填 说明
name string 待创建相册的相册名。

返回值:

类型 说明
Promise<Album> Promise对象,返回创建的相册实例。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if parameter is invalid.
13900012 Permission denied.
13900015 File exists.
13900020 Invalid argument.
14000011 System inner fail.

示例:

import { BusinessError } from '@ohos.base';

async function example() {
  console.info('createAlbumDemo');
  let albumName: string = 'newAlbumName' + new Date().getTime();
  phAccessHelper.createAlbum(albumName).then((album) => {
    console.info('createAlbumPromise successfully, album: ' + album.albumName + ' album uri: ' + album.albumUri);
  }).catch((err: BusinessError) => {
    console.error(`createAlbumPromise failed with err: ${err.code}, ${err.message}`);
  });
}

deleteAlbums(deprecated)

deleteAlbums(albums: Array<Album>, callback: AsyncCallback<void>): void

删除相册,使用callback方式返回结果。

删除相册前需先确保相册存在,只能删除用户相册。

说明:

从API version 10开始支持,从API version 11开始废弃。建议使用MediaAlbumChangeRequest.deleteAlbums替代。

系统接口:此接口为系统接口。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

需要权限:ohos.permission.WRITE_IMAGEVIDEO

参数:

参数名 类型 必填 说明
albums Array<Album> 待删除相册的数组。
callback AsyncCallback<void> callback返回void。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if parameter is invalid.
13900012 Permission denied.
13900020 Invalid argument.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';

async function example() {
  // 示例代码为删除相册名为newAlbumName的相册。
  console.info('deleteAlbumsDemo');
  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
  predicates.equalTo('album_name', 'newAlbumName');
  let fetchOptions: photoAccessHelper.FetchOptions = {
    fetchColumns: [],
    predicates: predicates
  };
  let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC, fetchOptions);
  let album: photoAccessHelper.Album = await fetchResult.getFirstObject();
  phAccessHelper.deleteAlbums([album], (err) => {
    if (err) {
      console.error(`deletePhotoAlbumsCallback failed with err: ${err.code}, ${err.message}`);
      return;
    }
    console.info('deletePhotoAlbumsCallback successfully');
  });
  fetchResult.close();
}

deleteAlbums(deprecated)

deleteAlbums(albums: Array<Album>): Promise<void>

删除相册,使用Promise方式返回结果。

删除相册前需先确保相册存在,只能删除用户相册。

说明:

从API version 10开始支持,从API version 11开始废弃。建议使用MediaAlbumChangeRequest.deleteAlbums替代。

系统接口:此接口为系统接口。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

需要权限:ohos.permission.WRITE_IMAGEVIDEO

参数:

参数名 类型 必填 说明
albums Array<Album> 待删除相册的数组。

返回值:

类型 说明
Promise<void> Promise对象,返回void。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if parameter is invalid.
13900012 Permission denied.
13900020 Invalid argument.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';
import { BusinessError } from '@ohos.base';

async function example() {
  // 示例代码为删除相册名为newAlbumName的相册。
  console.info('deleteAlbumsDemo');
  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
  predicates.equalTo('album_name', 'newAlbumName');
  let fetchOptions: photoAccessHelper.FetchOptions = {
    fetchColumns: [],
    predicates: predicates
  };
  let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC, fetchOptions);
  let album: photoAccessHelper.Album = await fetchResult.getFirstObject();
  phAccessHelper.deleteAlbums([album]).then(() => {
    console.info('deletePhotoAlbumsPromise successfully');
    }).catch((err: BusinessError) => {
      console.error(`deletePhotoAlbumsPromise failed with err: ${err.code}, ${err.message}`);
  });
  fetchResult.close();
}

getHiddenAlbums11+

getHiddenAlbums(mode: HiddenPhotosDisplayMode, options: FetchOptions, callback: AsyncCallback<FetchResult<Album>>): void

根据隐藏文件显示模式和检索选项获取系统中的隐藏相册,使用callback方式返回结果。

系统接口:此接口为系统接口。

需要权限:ohos.permission.READ_IMAGEVIDEO 和 ohos.permission.MANAGE_PRIVATE_PHOTOS

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
mode HiddenPhotosDisplayMode 隐藏文件显示模式
options FetchOptions 检索选项
callback AsyncCallback<FetchResult<Album>> callback返回获取相册的结果集。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
201 Permission denied.
202 Called by non-system application.
401 if parameter is invalid.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';

// 获取系统中包含隐藏文件且相册名为'newAlbumName'的相册
async function getHiddenAlbumsView() {
  console.info('getHiddenAlbumsViewDemo');
  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
  predicates.equalTo('album_name', 'newAlbumName');
  let fetchOptions: photoAccessHelper.FetchOptions = {
    fetchColumns: [],
    predicates: predicates
  };
  phAccessHelper.getHiddenAlbums(photoAccessHelper.HiddenPhotosDisplayMode.ALBUMS_MODE, fetchOptions,
    async (err, fetchResult) => {
      if (fetchResult === undefined) {
        console.error('getHiddenAlbumsViewCallback fetchResult is undefined');
        return;
      }
      let album = await fetchResult.getFirstObject();
      console.info('getHiddenAlbumsViewCallback successfully, album name: ' + album.albumName);
      fetchResult.close();
  });
}

getHiddenAlbums11+

getHiddenAlbums(mode: HiddenPhotosDisplayMode, callback: AsyncCallback<FetchResult<Album>>): void

根据隐藏文件显示模式获取系统中的隐藏相册,使用callback方式返回结果

系统接口:此接口为系统接口。

需要权限:ohos.permission.READ_IMAGEVIDEO 和 ohos.permission.MANAGE_PRIVATE_PHOTOS

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
mode HiddenPhotosDisplayMode 隐藏文件显示模式
callback AsyncCallback<FetchResult<Album>> callback返回获取相册的结果集。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
201 Permission denied.
202 Called by non-system application.
401 if parameter is invalid.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';

// 获取系统预置的隐藏相册
async function getSysHiddenAlbum() {
  console.info('getSysHiddenAlbumDemo');
  phAccessHelper.getHiddenAlbums(photoAccessHelper.HiddenPhotosDisplayMode.ASSETS_MODE, async (err, fetchResult) => {
    if (fetchResult === undefined) {
      console.error('getSysHiddenAlbumCallback fetchResult is undefined');
      return;
    }
    let hiddenAlbum: photoAccessHelper.Album = await fetchResult.getFirstObject();
    console.info('getSysHiddenAlbumCallback successfully, albumUri: ' + hiddenAlbum.albumUri);
    fetchResult.close();
  });
}

// 获取隐藏相册-相册视图,即系统中包含隐藏文件的相册(不包含系统预置的隐藏相册本身和回收站相册)
async function getHiddenAlbumsView() {
  console.info('getHiddenAlbumsViewDemo');
  phAccessHelper.getHiddenAlbums(photoAccessHelper.HiddenPhotosDisplayMode.ALBUMS_MODE, async (err, fetchResult) => {
    if (fetchResult === undefined) {
      console.error('getHiddenAlbumsViewCallback fetchResult is undefined');
      return;
    }
    let albums: Array<photoAccessHelper.Album> = await fetchResult.getAllObjects();
    console.info('getHiddenAlbumsViewCallback successfully, albums size: ' + albums.length);

    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
    let fetchOption: photoAccessHelper.FetchOptions = {
      fetchColumns: [],
      predicates: predicates
    };
    for (let i = 0; i < albums.length; i++) {
      // 获取相册中的隐藏文件
      albums[i].getAssets(fetchOption, (err, assetFetchResult) => {
        console.info('album get hidden assets successfully, getCount: ' + assetFetchResult.getCount());
      });
    }
    fetchResult.close();
  });
}

getHiddenAlbums11+

getHiddenAlbums(mode: HiddenPhotosDisplayMode, options?: FetchOptions): Promise<FetchResult<Album>>

根据隐藏文件显示模式和检索选项获取系统中的隐藏相册,使用Promise方式返回结果。

系统接口:此接口为系统接口。

需要权限:ohos.permission.READ_IMAGEVIDEO 和 ohos.permission.MANAGE_PRIVATE_PHOTOS

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
mode HiddenPhotosDisplayMode 隐藏文件显示模式
options FetchOptions 检索选项,不填时默认根据隐藏文件显示模式检索。

返回值:

类型 说明
Promise<FetchResult<Album>> Promise对象,返回获取相册的结果集。

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';
import { BusinessError } from '@ohos.base';

// 获取系统预置的隐藏相册
async function getSysHiddenAlbum() {
  console.info('getSysHiddenAlbumDemo');
  phAccessHelper.getHiddenAlbums(photoAccessHelper.HiddenPhotosDisplayMode.ASSETS_MODE)
    .then( async (fetchResult) => {
      if (fetchResult === undefined) {
        console.error('getSysHiddenAlbumPromise fetchResult is undefined');
        return;
      }
      let hiddenAlbum: photoAccessHelper.Album = await fetchResult.getFirstObject();
      console.info('getAlbumsPromise successfully, albumUri: ' + hiddenAlbum.albumUri);
      fetchResult.close();
    }).catch((err: BusinessError) => {
      console.error(`getSysHiddenAlbumPromise failed with err: ${err.code}, ${err.message}`);
    });
}

// 获取隐藏相册-相册视图,即系统中包含隐藏文件的相册(不包含系统预置的隐藏相册本身和回收站相册)
async function getHiddenAlbumsView() {
  console.info('getHiddenAlbumsViewDemo');
  phAccessHelper.getHiddenAlbums(photoAccessHelper.HiddenPhotosDisplayMode.ALBUMS_MODE).then( async (fetchResult) => {
    if (fetchResult === undefined) {
      console.error('getHiddenAlbumsViewPromise fetchResult is undefined');
      return;
    }
    let albums: Array<photoAccessHelper.Album> = await fetchResult.getAllObjects();
    console.info('getHiddenAlbumsViewPromise successfully, albums size: ' + albums.length);

    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
    let fetchOption: photoAccessHelper.FetchOptions = {
      fetchColumns: [],
      predicates: predicates
    };
    for (let i = 0; i < albums.length; i++) {
      // 获取相册中的隐藏文件
      albums[i].getAssets(fetchOption).then((assetFetchResult) => {
        console.info('album get hidden assets successfully, getCount: ' + assetFetchResult.getCount());
      }).catch((err: BusinessError) => {
        console.error(`album get hidden assets failed with error: ${err.code}, ${err.message}`);
      });
    }
    fetchResult.close();
  }).catch((err: BusinessError) => {
    console.error(`getHiddenAlbumsViewPromise failed with err: ${err.code}, ${err.message}`);
  });
}

deleteAssets(deprecated)

deleteAssets(uriList: Array<string>, callback: AsyncCallback<void>): void

删除媒体文件,删除的文件进入到回收站,使用callback方式返回结果。

说明:

从API version 10开始支持,从API version 11开始废弃。建议使用MediaAssetChangeRequest.deleteAssets替代。

系统接口:此接口为系统接口。

需要权限:ohos.permission.WRITE_IMAGEVIDEO

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
uriList Array<string> 待删除的媒体文件uri数组。
callback AsyncCallback<void> callback返回void。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if parameter is invalid.
13900012 Permission denied.
13900020 Invalid argument.
14000002 Invalid uri.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';

async function example() {
  console.info('deleteAssetDemo');
  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
  let fetchOptions: photoAccessHelper.FetchOptions = {
    fetchColumns: [],
    predicates: predicates
  };
  try {
    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions);
    let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
    if (asset === undefined) {
      console.error('asset not exist');
      return;
    }
    phAccessHelper.deleteAssets([asset.uri], (err) => {
      if (err === undefined) {
        console.info('deleteAssets successfully');
      } else {
        console.error(`deleteAssets failed with error: ${err.code}, ${err.message}`);
      }
    });
  } catch (err) {
    console.error(`fetch failed, error: ${err.code}, ${err.message}`);
  }
}

deleteAssets(deprecated)

deleteAssets(uriList: Array<string>): Promise<void>

删除媒体文件,删除的文件进入到回收站,使用Promise方式返回结果。

说明:

从API version 10开始支持,从API version 11开始废弃。建议使用MediaAssetChangeRequest.deleteAssets替代。

系统接口:此接口为系统接口。

需要权限:ohos.permission.WRITE_IMAGEVIDEO

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
uriList Array<string> 待删除的媒体文件uri数组。

返回值:

类型 说明
Promise<void> Promise对象,返回void。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if parameter is invalid.
13900012 Permission denied.
13900020 Invalid argument.
14000002 Invalid uri.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';

async function example() {
  console.info('deleteDemo');
  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
  let fetchOptions: photoAccessHelper.FetchOptions = {
    fetchColumns: [],
    predicates: predicates
  };
  try {
    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions);
    let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
    if (asset === undefined) {
      console.error('asset not exist');
      return;
    }
    await phAccessHelper.deleteAssets([asset.uri]);
    console.info('deleteAssets successfully');
  } catch (err) {
    console.error(`deleteAssets failed with error: ${err.code}, ${err.message}`);
  }
}

getPhotoIndex

getPhotoIndex(photoUri: string, albumUri: string, options: FetchOptions, callback: AsyncCallback<number>): void

获取相册中图片或视频的位置,使用callback方式返回结果。

系统接口:此接口为系统接口。

需要权限:ohos.permission.READ_IMAGEVIDEO

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
photoUri string 所查询的图库资源的uri。
albumUri string 相册uri,可以为空字符串,为空字符串时默认查询全部图库资源。
options FetchOptions 检索选项,predicates中必须设置一种检索排序方式,不设置或多设置均会导致接口调用异常。
callback AsyncCallback<number> callback返回相册中资源的索引。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if parameter is invalid.
13900012 Permission denied.
13900020 Invalid argument.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';

async function example() {
  try {
    console.info('getPhotoIndexDemo');
    let predicatesForGetAsset: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
    let fetchOp: photoAccessHelper.FetchOptions = {
      fetchColumns: [],
      predicates: predicatesForGetAsset
    };
    // Obtain the uri of the album
    let albumFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.SYSTEM, photoAccessHelper.AlbumSubtype.FAVORITE, fetchOp);
    let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject();
    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
    predicates.orderByAsc(photoAccessHelper.PhotoKeys.DATE_MODIFIED);
    let fetchOptions: photoAccessHelper.FetchOptions = {
      fetchColumns: [photoAccessHelper.PhotoKeys.DATE_MODIFIED],
      predicates: predicates
    };
    let photoFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await album.getAssets(fetchOptions);
    let expectIndex = 1;
    // Obtain the uri of the second file
    let photoAsset: photoAccessHelper.PhotoAsset = await photoFetchResult.getObjectByPosition(expectIndex);

    phAccessHelper.getPhotoIndex(photoAsset.uri, album.albumUri, fetchOptions, (err, index) => {
      if (err === undefined) {
        console.info(`getPhotoIndex successfully and index is : ${index}`);
      } else {
        console.error(`getPhotoIndex failed; error: ${err.code}, ${err.message}`);
      }
    });
  } catch (error) {
    console.error(`getPhotoIndex failed; error: ${error.code}, ${error.message}`);
  }
}

getPhotoIndex

getPhotoIndex(photoUri: string, albumUri: string, options: FetchOptions): Promise<number>

获取相册中图片或视频的位置,使用Promise方式返回结果。

系统接口:此接口为系统接口。

需要权限:ohos.permission.READ_IMAGEVIDEO

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
photoUri string 所查询的图库资源的uri。
albumUri string 相册uri,可以为空字符串,为空字符串时默认查询全部图库资源。
options FetchOptions 检索选项,predicates中必须设置一种检索排序方式,不设置或多设置均会导致接口调用异常。

返回值:

类型 说明
Promise<number> 返回相册中资源的索引。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if parameter is invalid.
13900012 Permission denied.
13900020 Invalid argument.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';
import { BusinessError } from '@ohos.base';

async function example() {
  try {
    console.info('getPhotoIndexDemo');
    let predicatesForGetAsset: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
    let fetchOp: photoAccessHelper.FetchOptions = {
      fetchColumns: [],
      predicates: predicatesForGetAsset
    };
    // Obtain the uri of the album
    let albumFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.SYSTEM, photoAccessHelper.AlbumSubtype.FAVORITE, fetchOp);
    let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject();
    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
    predicates.orderByAsc(photoAccessHelper.PhotoKeys.DATE_MODIFIED);
    let fetchOptions: photoAccessHelper.FetchOptions = {
      fetchColumns: [photoAccessHelper.PhotoKeys.DATE_MODIFIED],
      predicates: predicates
    };
    let photoFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await album.getAssets(fetchOptions);
    let expectIndex = 1;
    // Obtain the uri of the second file
    let photoAsset: photoAccessHelper.PhotoAsset = await photoFetchResult.getObjectByPosition(expectIndex);
    phAccessHelper.getPhotoIndex(photoAsset.uri, album.albumUri, fetchOptions).then((index) => {
      console.info(`getPhotoIndex successfully and index is : ${index}`);
    }).catch((err: BusinessError) => {
      console.error(`getPhotoIndex failed; error: ${err.code}, ${err.message}`);
    });
  } catch (error) {
    console.error(`getPhotoIndex failed; error: ${error.code}, ${error.message}`);
  }
}

saveFormInfo11+

saveFormInfo(info:FormInfo, callback: AsyncCallback<void>):void

将图库卡片相关信息保存到数据库中,使用callback方式返回结果。

系统接口:此接口为系统接口。

需要权限:ohos.permission.WRITE_IMAGEVIDEO

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
info FormInfo 图库卡片信息,包括图库卡片的id和卡片绑定的图片的uri。
callback AsyncCallback<void> callback返回void。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
201 Permission verification failed, usually the result returned by VerifyAccessToken.
202 Permission verification failed, application which is not a system application uses system API.
401 if the argument is invalid.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';
import { BusinessError } from '@ohos.base';

async function example() {
  console.info('saveFormInfoDemo');
  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
  let fetchOptions: photoAccessHelper.FetchOptions = {
    fetchColumns: [],
    predicates: predicates
  };
  let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions);
  let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();

  let info: photoAccessHelper.FormInfo = {
    //formId是一个由纯数字组成的字符串,uri为图库中存在的图片的uri信息,图库中无图片创建卡片时uri需为空字符串
    formId : "20230116123",
    uri: photoAsset.uri,
  }

  phAccessHelper.saveFormInfo(info, async (err: BusinessError) => {
    if (err == undefined) {
      console.info('saveFormInfo success');
    } else {
      console.error(`saveFormInfo fail with error: ${err.code}, ${err.message}`);
    }
  });
}

saveFormInfo11+

saveFormInfo(info:FormInfo):Promise<void>

将图库卡片相关信息保存到数据库中,使用Promise方式返回结果。

系统接口:此接口为系统接口。

需要权限:ohos.permission.WRITE_IMAGEVIDEO

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
info FormInfo 图库卡片信息,包括图库卡片的id和卡片绑定的图片的uri。

返回值:

类型 说明
Promise<void> Promise对象,返回void。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
201 Permission verification failed, usually the result returned by VerifyAccessToken.
202 Permission verification failed, application which is not a system application uses system API.
401 if the argument is invalid.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';
import { BusinessError } from '@ohos.base';

async function example() {
  console.info('saveFormInfoDemo');
  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
  let fetchOptions: photoAccessHelper.FetchOptions = {
    fetchColumns: [],
    predicates: predicates
  };
  let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions);
  let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();

  let info: photoAccessHelper.FormInfo = {
    //formId是一个由纯数字组成的字符串,uri为图库中存在的图片的uri信息,图库中无图片创建卡片时uri需为空字符串
    formId: "20230116123",
    uri: photoAsset.uri,
  }

  phAccessHelper.saveFormInfo(info).then(() => {
    console.info('saveFormInfo successfully');
  }).catch((err: BusinessError) => {
    console.error(`saveFormInfo failed with error: ${err.code}, ${err.message}`);
  });
}

removeFormInfo11+

removeFormInfo(info:FormInfo, callback: AsyncCallback<void>):void

从数据库中删除图库卡片信息,使用callback方式返回结果。

系统接口:此接口为系统接口。

需要权限:ohos.permission.WRITE_IMAGEVIDEO

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
info FormInfo 图库卡片信息,包括图库卡片的id和卡片绑定的图片的uri。
callback AsyncCallback<void> callback返回void。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
201 Permission verification failed, usually the result returned by VerifyAccessToken.
202 Permission verification failed, application which is not a system application uses system API.
401 if the argument is invalid.
14000011 System inner fail.

示例:

import { BusinessError } from '@ohos.base';

async function example() {
  console.info('removeFormInfoDemo');
  let info: photoAccessHelper.FormInfo = {
    //formId是一个由纯数字组成的字符串,移除卡片的时候uri填空即可
    formId: "20230116123",
    uri: "",
  }

  phAccessHelper.removeFormInfo(info, async (err: BusinessError) => {
    if (err == undefined) {
      console.info('removeFormInfo success');
    } else {
      console.error(`removeFormInfo fail with error: ${err.code}, ${err.message}`);
    }
  });
}

removeFormInfo11+

removeFormInfo(info:FormInfo):Promise<void>

从数据库中删除图库卡片信息,使用Promise方式返回结果。

系统接口:此接口为系统接口。

需要权限:ohos.permission.WRITE_IMAGEVIDEO

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
info FormInfo 图库卡片信息,包括图库卡片的id和卡片绑定的图片的uri。

返回值:

类型 说明
Promise<void> Promise对象,返回void。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
201 Permission verification failed, usually the result returned by VerifyAccessToken.
202 Permission verification failed, application which is not a system application uses system API.
401 if the argument is invalid.
14000011 System inner fail.

示例:

import { BusinessError } from '@ohos.base';

async function example() {
  console.info('removeFormInfoDemo');
  let info: photoAccessHelper.FormInfo = {
    //formId是一个由纯数字组成的字符串,移除卡片的时候uri填空即可
    formId: "20230116123",
    uri: "",
  }

  phAccessHelper.removeFormInfo(info).then(() => {
    console.info('removeFormInfo successfully');
  }).catch((err: BusinessError) => {
    console.error(`removeFormInfo failed with error: ${err.code}, ${err.message}`);
  });
}

PhotoAsset

提供封装文件属性的方法。

open(deprecated)

open(mode: string, callback: AsyncCallback<number>): void

打开当前文件,使用callback方式返回异步结果。

说明:

从API version 10开始支持,从API version 11开始废弃。出于安全考量,不再提供获取正式媒体文件句柄的接口。

注意:当前此(写)操作是互斥的操作,返回的文件描述符在使用完毕后需要调用close进行释放。

系统接口:此接口为系统接口。

需要权限:ohos.permission.READ_IMAGEVIDEO 或 ohos.permission.WRITE_IMAGEVIDEO

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
mode string 打开文件方式,分别为:'r'(只读), 'w'(只写), 'rw'(读写)。
callback AsyncCallback<number> callback返回文件描述符。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if parameter is invalid.
13900012 Permission denied.
13900020 Invalid argument.
14000011 System inner fail.

示例:

async function example() {
  console.info('Open demo');
  let testFileName: string = 'testFile' + Date.now() + '.jpg';
  let photoAsset: photoAccessHelper.PhotoAsset = await phAccessHelper.createAsset(testFileName);
  photoAsset.open('rw', (err, fd) => {
    if (fd !== undefined) {
      console.info('File fd' + fd);
      photoAsset.close(fd);
    } else {
      console.error(`Open file err: ${err.code}, ${err.message}`);
    }
  });
}

open(deprecated)

open(mode: string): Promise<number>

打开当前文件,使用promise方式返回异步结果。

说明:

从API version 10开始支持,从API version 11开始废弃。出于安全考量,不再提供获取正式媒体文件句柄的接口。

注意:当前此(写)操作是互斥的操作,返回的文件描述符在使用完毕后需要调用close进行释放。

系统接口:此接口为系统接口。

需要权限:ohos.permission.READ_IMAGEVIDEO 或 ohos.permission.WRITE_IMAGEVIDEO

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
mode string 打开文件方式,分别为:'r'(只读), 'w'(只写), 'rw'(读写)。

返回值:

类型 说明
Promise<number> Promise对象,返回文件描述符。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if parameter is invalid.
13900012 Permission denied.
13900020 Invalid argument.
14000011 System inner fail.

示例:

async function example() {
  console.info('Open demo');
  try {
    let testFileName: string = 'testFile' + Date.now() + '.jpg';
    let photoAsset: photoAccessHelper.PhotoAsset = await phAccessHelper.createAsset(testFileName);
    let fd: number = await photoAsset.open('rw');
    if (fd !== undefined) {
      console.info('File fd' + fd);
      photoAsset.close(fd);
    } else {
      console.error('Open file fail');
    }
  } catch (err) {
    console.error(`Open demo err: ${err.code}, ${err.message}`);
  }
}

setFavorite(deprecated)

setFavorite(favoriteState: boolean, callback: AsyncCallback<void>): void

将文件设置为收藏文件,使用callback方式返回异步结果。

说明:

从API version 10开始支持,从API version 11开始废弃。建议使用MediaAssetChangeRequest.setFavorite替代。

系统接口:此接口为系统接口。

需要权限:ohos.permission.WRITE_IMAGEVIDEO

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
favoriteState boolean 是否设置为收藏文件, true:设置为收藏文件,false:取消收藏。
callback AsyncCallback<void> callback返回void。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if parameter is invalid.
13900012 Permission denied.
13900020 Invalid argument.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';

async function example() {
  console.info('setFavoriteDemo');
  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
  let fetchOption: photoAccessHelper.FetchOptions = {
    fetchColumns: [],
    predicates: predicates
  };
  let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption);
  let asset = await fetchResult.getFirstObject();
  asset.setFavorite(true, (err) => {
    if (err === undefined) {
      console.info('favorite successfully');
    } else {
      console.error(`favorite failed with error: ${err.code}, ${err.message}`);
    }
  });
}

setFavorite(deprecated)

setFavorite(favoriteState: boolean): Promise<void>

将文件设置为收藏文件,使用promise方式返回异步结果。

说明:

从API version 10开始支持,从API version 11开始废弃。建议使用MediaAssetChangeRequest.setFavorite替代。

系统接口:此接口为系统接口。

需要权限:ohos.permission.WRITE_IMAGEVIDEO

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
favoriteState boolean 是否设置为收藏文件, true:设置为收藏文件,false:取消收藏。

返回值:

类型 说明
Promise<void> Promise对象,返回void。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if parameter is invalid.
13900012 Permission denied.
13900020 Invalid argument.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';
import { BusinessError } from '@ohos.base';

async function example() {
  console.info('setFavoriteDemo');
  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
  let fetchOption: photoAccessHelper.FetchOptions = {
    fetchColumns: [],
    predicates: predicates
  };
  let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption);
  let asset = await fetchResult.getFirstObject();
  asset.setFavorite(true).then(() => {
    console.info('setFavorite successfully');
  }).catch((err: BusinessError) => {
    console.error(`setFavorite failed with error: ${err.code}, ${err.message}`);
  });
}

setHidden(deprecated)

setHidden(hiddenState: boolean, callback: AsyncCallback<void>): void

将文件设置为隐私文件,使用callback方式返回异步结果。

隐私文件存在隐私相册中,用户通过隐私相册去获取隐私文件后可以通过设置hiddenState为false来从隐私相册中移除。

说明:

从API version 10开始支持,从API version 11开始废弃。建议使用MediaAssetChangeRequest.setHidden替代。

系统接口:此接口为系统接口。

需要权限:ohos.permission.WRITE_IMAGEVIDEO

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
hiddenState boolean 是否设置为隐藏文件,true:将文件资产放入隐藏相册;false:从隐藏相册中恢复。
callback AsyncCallback<void> callback返回void。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if parameter is invalid.
13900012 Permission denied.
13900020 Invalid argument.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';

async function example() {
  console.info('setHiddenDemo');
  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
  let fetchOption: photoAccessHelper.FetchOptions = {
    fetchColumns: [],
    predicates: predicates
  };
  let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption);
  let asset = await fetchResult.getFirstObject();
  asset.setHidden(true, (err) => {
    if (err === undefined) {
      console.info('setHidden successfully');
    } else {
      console.error(`setHidden failed with error: ${err.code}, ${err.message}`);
    }
  });
}

setHidden(deprecated)

setHidden(hiddenState: boolean): Promise<void>

将文件设置为隐私文件,使用promise方式返回异步结果。

隐私文件存在隐私相册中,用户通过隐私相册去获取隐私文件后可以通过设置hiddenState为false来从隐私相册中移除。

说明:

从API version 10开始支持,从API version 11开始废弃。建议使用MediaAssetChangeRequest.setHidden替代。

系统接口:此接口为系统接口。

需要权限:ohos.permission.WRITE_IMAGEVIDEO

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
hiddenState boolean 是否设置为隐藏文件,true:将文件资产放入隐藏相册;false:从隐藏相册中恢复。

返回值:

类型 说明
Promise<void> Promise对象,返回void。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if parameter is invalid.
13900012 Permission denied.
13900020 Invalid argument.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';
import { BusinessError } from '@ohos.base';

async function example() {
  // 示例代码为将文件从隐藏相册中恢复,需要先在隐藏相册预置资源
  console.info('setHiddenDemo');
  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
  let fetchOption: photoAccessHelper.FetchOptions = {
    fetchColumns: [],
    predicates: predicates
  };
  let albumList: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.SYSTEM, photoAccessHelper.AlbumSubtype.HIDDEN);
  let album = await albumList.getFirstObject();
  let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await album.getAssets(fetchOption);
  let asset = await fetchResult.getFirstObject();
  asset.setHidden(false).then(() => {
    console.info('setHidden successfully');
  }).catch((err: BusinessError) => {
    console.error(`setHidden failed with error: ${err.code}, ${err.message}`);
  });
}

getExif

getExif(): Promise<string>

返回jpg格式图片Exif标签组成的json格式的字符串,该方法使用Promise方式返回结果。

此接口中获取的Exif标签信息是由image模块提供。Exif标签详细信息请参考image.PropertyKey

注意:此接口返回的是Exif标签组成的json格式的字符串,完整Exif信息由all_exif与PhotoKeys.USER_COMMENT组成,fetchColumns需要传入这两个字段。

系统接口:此接口为系统接口。

需要权限:ohos.permission.READ_IMAGEVIDEO

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

返回值:

类型 说明
Promise<string> 返回Exif标签组成的json格式的字符串。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if parameter is invalid.
13900012 Permission denied.
13900020 Invalid argument.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';

async function example() {
  try {
    console.info('getExifDemo');
    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
    let fetchOptions: photoAccessHelper.FetchOptions = {
      fetchColumns: [ 'all_exif',  photoAccessHelper.PhotoKeys.USER_COMMENT],
      predicates: predicates
    };
    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions);
    let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
    let exifMessage = await photoAsset.getExif();
    let userCommentKey = 'UserComment';
    let userComment = JSON.stringify(JSON.parse(exifMessage), [userCommentKey]);
    console.info('getExifDemo userComment: ' + JSON.stringify(userComment));
    fetchResult.close();
  } catch (err) {
    console.error(`getExifDemoCallback failed with error: ${err.code}, ${err.message}`);
  }
}

getExif

getExif(callback: AsyncCallback<string>): void

返回jpg格式图片Exif标签组成的json格式的字符串,使用callback方式返回异步结果。

此接口中获取的Exif标签信息是由image模块提供。Exif标签详细信息请参考image.PropertyKey

注意:此接口返回的是Exif标签组成的json格式的字符串,完整Exif信息由all_exif与PhotoKeys.USER_COMMENT组成,fetchColumns需要传入这两个字段。

系统接口:此接口为系统接口。

需要权限:ohos.permission.READ_IMAGEVIDEO

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
callback AsyncCallback<string> 返回Exif字段组成的json格式的字符串。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if parameter is invalid.
13900012 Permission denied.
13900020 Invalid argument.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';

async function example() {
  try {
    console.info('getExifDemo');
    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
    predicates.isNotNull('all_exif')
    let fetchOptions: photoAccessHelper.FetchOptions = {
      fetchColumns: ['all_exif', photoAccessHelper.PhotoKeys.USER_COMMENT],
      predicates: predicates
    };
    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions);
    let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
    console.info('getExifDemo photoAsset displayName: ' + JSON.stringify(photoAsset.displayName));
    let userCommentKey = 'UserComment';
    photoAsset.getExif((err, exifMessage) => {
      if (exifMessage !== undefined) {
        let userComment = JSON.stringify(JSON.parse(exifMessage), [userCommentKey]);
        console.info('getExifDemo userComment: ' + JSON.stringify(userComment));
      } else {
        console.error(`getExif failed, error: ${err.code}, ${err.message}`);
      }
    });
    fetchResult.close();
  } catch (err) {
    console.error(`getExifDemoCallback failed with error: ${err.code}, ${err.message}`);
  }
}

setUserComment(deprecated)

setUserComment(userComment: string): Promise<void>

修改图片或者视频的备注信息,该方法使用Promise来返回结果。

说明:

从API version 10开始支持,从API version 11开始废弃。建议使用MediaAssetChangeRequest.setUserComment替代。

注意:此接口只可修改图片或者视频的备注信息。

系统接口:此接口为系统接口。

需要权限:ohos.permission.WRITE_IMAGEVIDEO

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
userComment string 待修改的图片或视频的备注信息,备注信息最长为420字符。

返回值:

类型 说明
Promise<void> Promise对象,返回void。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if parameter is invalid.
13900012 Permission denied.
13900020 Invalid argument.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';

async function example() {
  try {
    console.info('setUserCommentDemo')
    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
    let fetchOptions: photoAccessHelper.FetchOptions = {
      fetchColumns: [],
      predicates: predicates
    };
    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions);
    let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
    let userComment = 'test_set_user_comment';
    await photoAsset.setUserComment(userComment);
  } catch (err) {
    console.error(`setUserCommentDemoPromise failed with error: ${err.code}, ${err.message}`);
  }
}

setUserComment(deprecated)

setUserComment(userComment: string, callback: AsyncCallback<void>): void

修改图片或者视频的备注信息,该方法使用callback形式来返回结果。

说明:

从API version 10开始支持,从API version 11开始废弃。建议使用MediaAssetChangeRequest.setUserComment替代。

注意:此接口只可修改图片或者视频的备注信息。

系统接口:此接口为系统接口。

需要权限:ohos.permission.WRITE_IMAGEVIDEO

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
userComment string 待修改的图片或视频的备注信息,备注信息最长为420字符。
callback AsyncCallback<void> callback返回void。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if parameter is invalid.
13900012 Permission denied.
13900020 Invalid argument.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';

async function example() {
  try {
    console.info('setUserCommentDemo')
    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
    let fetchOptions: photoAccessHelper.FetchOptions = {
      fetchColumns: [],
      predicates: predicates
    };
    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions);
    let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
    let userComment = 'test_set_user_comment';
    photoAsset.setUserComment(userComment, (err) => {
      if (err === undefined) {
        console.info('setUserComment successfully');
      } else {
        console.error(`setUserComment failed with error: ${err.code}, ${err.message}`);
      }
    });
  } catch (err) {
    console.error(`setUserCommentDemoCallback failed with error: ${err.code}, ${err.message}`);
  }
}

setPending11+

setPending(pendingState: boolean, callback: AsyncCallback<void>): void

为图片或视频资源设置pending状态,该方法使用callback形式来返回结果。

将文件通过setPending(true)设置为pending状态后,只能通过setPending(false)解除pending状态。可以通过photoAsset.get(photoAccessHelper.PhotoKeys.PENDING)的方式获取是否为pending状态,pending状态下返回true,否则返回false。

注意:setPending只能在文件的创建期使用,在文件的首次创建流程的close之后,无法通过setPending(true)将文件设置为pending状态。

系统接口:此接口为系统接口。

需要权限:ohos.permission.WRITE_IMAGEVIDEO

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
pendingState boolean 设置的pending状态,true为设置pending状态,false为解除pending状态
callback AsyncCallback<void> Callback对象,返回void

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
201 Permission denied.
202 Called by non-system application.
401 if parameter is invalid.
14000011 System inner fail.

示例:

async function example() {
  try {
    console.info('setPendingCallbackDemo');
    let testFileName: string = 'testFile' + Date.now() + '.jpg';
    let photoAsset = await phAccessHelper.createAsset(testFileName);
    let fd = await photoAsset.open('rw');
    photoAsset.setPending(true, async (err) => {
      if (err !== undefined) {
        console.error(`setPending(true) failed with error: ${err.code}, ${err.message}`);
        return;
      }
      // write photo buffer in fd
      photoAsset.setPending(false, async (err) => {
        if (err !== undefined) {
          console.error(`setPending(false) failed with error: ${err.code}, ${err.message}`);
          return;
        }
        await photoAsset.close(fd);
      });
    });
  } catch (err) {
    console.error(`setPendingCallbackDemo failed with error: ${err.code}, ${err.message}`);
  }
}

setPending11+

setPending(pendingState: boolean): Promise<void>

为图片或视频资源设置pending状态,该方法使用promise形式来返回结果。

将文件通过setPending(true)设置为pending状态后,只能通过setPending(false)解除pending状态。可以通过photoAsset.get(photoAccessHelper.PhotoKeys.PENDING)的方式获取是否为pending状态,pending状态下返回true,否则返回false。

注意:setPending只能在文件的创建期使用,在文件的首次创建流程的close之后,无法通过setPending(true)将文件设置为pending状态。

系统接口:此接口为系统接口。

需要权限:ohos.permission.WRITE_IMAGEVIDEO

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
pendingState boolean 设置的pending状态,true为设置pending状态,false为解除pending状态。

返回值:

类型 说明
Promise<boolean> Promise对象,返回void。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
201 Permission denied.
202 Called by non-system application.
401 if parameter is invalid.
14000011 System inner fail.

示例:

async function example() {
  try {
    console.info('setPendingPromiseDemo');
    let testFileName: string = 'testFile' + Date.now() + '.jpg';
    let photoAsset = await phAccessHelper.createAsset(testFileName);
    let fd = await photoAsset.open('rw');
    await photoAsset.setPending(true);
    // write photo buffer in fd
    photoAsset.setPending(false);
    await photoAsset.close(fd);
  } catch (err) {
    console.error(`setPendingPromiseDemo failed with error: ${err.code}, ${err.message}`);
  }
}

isEdited11+

isEdited(callback: AsyncCallback<boolean>): void

查询图片或视频资源是否被编辑过,该方法使用callback形式来返回结果。

系统接口:此接口为系统接口。

需要权限:ohos.permission.READ_IMAGEVIDEO

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
callback AsyncCallback<boolean> Callback对象,返回图片或视频资源是否被编辑过

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
201 Permission denied.
202 Called by non-system application.
401 if parameter is invalid.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';

async function example() {
  try {
    console.info('isEditedCallbackDemo')
    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
    let fetchOptions: photoAccessHelper.FetchOptions = {
      fetchColumns: [],
      predicates: predicates
    };
    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions);
    let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
    photoAsset.isEdited((err, isEdited) => {
      if (err === undefined) {
        if (isEdited === true) {
          console.info('Photo is edited');
        } else {
          console.info('Photo is not edited');
        }
      } else {
        console.error(`isEdited failed with error: ${err.code}, ${err.message}`);
      }
    });
  } catch (err) {
    console.error(`isEditedDemoCallback failed with error: ${err.code}, ${err.message}`);
  }
}

isEdited11+

isEdited(): Promise<boolean>

查询图片或视频资源是否被编辑过,该方法使用promise形式来返回结果。

系统接口:此接口为系统接口。

需要权限:ohos.permission.READ_IMAGEVIDEO

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

返回值:

类型 说明
Promise<boolean> Promise对象,返回图片或视频资源是否被编辑过。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
201 Permission denied.
202 Called by non-system application.
401 if parameter is invalid.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';

async function example() {
  try {
    console.info('isEditedPromiseDemo')
    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
    let fetchOptions: photoAccessHelper.FetchOptions = {
      fetchColumns: [],
      predicates: predicates
    };
    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions);
    let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
    let isEdited = await photoAsset.isEdited();
    if (isEdited === true) {
      console.info('Photo is edited');
    } else {
      console.info('Photo is not edited');
    }
  } catch (err) {
    console.error(`isEditedDemoCallback failed with error: ${err.code}, ${err.message}`);
  }
}

requestEditData11+

requestEditData(callback: AsyncCallback<string>): void

获得图片或视频资源的编辑数据,该方法使用callback形式来返回结果。

如果资源未编辑过,则返回一个空字符串。

系统接口:此接口为系统接口。

需要权限:ohos.permission.READ_IMAGEVIDEO

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
callback AsyncCallback<string> Callback对象,返回图片或视频资源的编辑数据

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
201 Permission denied.
202 Called by non-system application.
401 if parameter is invalid.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';

async function example() {
  try {
    console.info('requestEditDataCallbackDemo')
    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
    let fetchOptions: photoAccessHelper.FetchOptions = {
      fetchColumns: [],
      predicates: predicates
    };
    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions);
    let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
    photoAsset.requestEditData((err, editdata) => {
      if (err === undefined) {
        console.info('Editdata is ' + editdata);
      } else {
        console.error(`requestEditData failed with error: ${err.code}, ${err.message}`);
      }
    });
  } catch (err) {
    console.error(`requestEditDataCallbackDemo failed with error: ${err.code}, ${err.message}`);
  }
}

requestEditData11+

requestEditData(): Promise<string>

获得图片或视频资源的编辑数据,该方法使用promise形式来返回结果。

如果资源未编辑过,则返回一个空字符串。

系统接口:此接口为系统接口。

需要权限:ohos.permission.READ_IMAGEVIDEO

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

返回值:

类型 说明
Promise<string> Promise对象,返回图片或视频资源的编辑数据。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
201 Permission denied.
202 Called by non-system application.
401 if parameter is invalid.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';

async function example() {
  try {
    console.info('requestEditDataPromiseDemo')
    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
    let fetchOptions: photoAccessHelper.FetchOptions = {
      fetchColumns: [],
      predicates: predicates
    };
    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions);
    let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
    let editdata: string = await photoAsset.requestEditData();
    console.info('Editdata is ' + editdata);
  } catch (err) {
    console.error(`requestEditDataPromiseDemo failed with error: ${err.code}, ${err.message}`);
  }
}

getEditData11+

getEditData(): Promise<MediaAssetEditData>

获得资产编辑数据,该方法使用promise形式来返回结果。

如果资源未编辑过,则返回的编辑数据的内容为空字符串。

系统接口:此接口为系统接口。

需要权限:ohos.permission.READ_IMAGEVIDEO

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

返回值:

类型 说明
Promise<MediaAssetEditData> Promise对象,返回资产编辑数据。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
201 Permission denied.
202 Called by non-system application.
401 if parameter is invalid.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';

async function example() {
  try {
    console.info('getEditDataDemo')
    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
    let fetchOptions: photoAccessHelper.FetchOptions = {
      fetchColumns: [],
      predicates: predicates
    };
    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions);
    let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
    let assetEditData: photoAccessHelper.MediaAssetEditData = await photoAsset.getEditData();
    let data: string = assetEditData.data;
    console.info('edit data is ' + data);
  } catch (err) {
    console.error(`getEditDataDemo failed with error: ${err.code}, ${err.message}`);
  }
}

requestSource11+

requestSource(callback: AsyncCallback<number>): void

打开源文件并返回fd,该方法使用callback形式来返回结果。

系统接口:此接口为系统接口。

需要权限:ohos.permission.READ_IMAGEVIDEO

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
callback AsyncCallback<number> Callback对象,返回源文件fd。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
201 Permission denied.
202 Called by non-system application.
401 if parameter is invalid.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';

async function example() {
  try {
    console.info('requsetSourceCallbackDemo')
    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
    let fetchOptions: photoAccessHelper.FetchOptions = {
      fetchColumns: [],
      predicates: predicates
    };
    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions);
    let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
    photoAsset.requestSource((err, fd) => {
      if (err === undefined) {
        console.info('Source fd is ' + fd);
      } else {
        console.error(`requestSource failed with error: ${err.code}, ${err.message}`);
      }
    });
  } catch (err) {
    console.error(`requsetSourceCallbackDemo failed with error: ${err.code}, ${err.message}`);
  }
}

requestSource11+

requestSource(): Promise<number>

打开源文件并返回fd,该方法使用promise形式来返回结果。

系统接口:此接口为系统接口。

需要权限:ohos.permission.READ_IMAGEVIDEO

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

返回值:

类型 说明
Promise<number> Promise对象,返回源文件fd。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
201 Permission denied.
202 Called by non-system application.
401 if parameter is invalid.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';

async function example() {
  try {
    console.info('requsetSourcePromiseDemo')
    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
    let fetchOptions: photoAccessHelper.FetchOptions = {
      fetchColumns: [],
      predicates: predicates
    };
    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions);
    let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
    let fd = await photoAsset.requestSource();
    console.info('Source fd is ' + fd);
  } catch (err) {
    console.error(`requsetSourcePromiseDemo failed with error: ${err.code}, ${err.message}`);
  }
}

commitEditedAsset11+

commitEditedAsset(editData: string, uri: string, callback: AsyncCallback<void>)

提交编辑数据以及编辑后的图片或视频,该方法使用callback形式来返回结果。

通过uri将编辑后的文件传递给媒体库,uri是编辑后的文件在应用沙箱下的FileUri,可参考FileUri

注意:新的编辑数据提交后,将覆盖掉原来的编辑数据。

系统接口:此接口为系统接口。

需要权限:ohos.permission.WRITE_IMAGEVIDEO

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
editData string 提交的编辑数据。
uri string 提交的编辑后的图片或视频,在应用沙箱下的uri。
callback AsyncCallback<void> Callback对象,返回void。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
201 Permission denied.
202 Called by non-system application.
401 if parameter is invalid.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';

async function example() {
  try {
    console.info('commitEditedAssetCallbackDemo')
    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
    let fetchOptions: photoAccessHelper.FetchOptions = {
      fetchColumns: [],
      predicates: predicates
    };
    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions);
    let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
    let editData = '123456';
    let uri = 'file://com.example.temptest/data/storage/el2/base/haps/entry/files/test.jpg';
    photoAsset.commitEditedAsset(editData, uri, (err) => {
      if (err === undefined) {
        console.info('commitEditedAsset is successful');
      } else {
        console.error(`commitEditedAsset failed with error: ${err.code}, ${err.message}`);
      }
    });
  } catch (err) {
    console.error(`commitEditedAssetCallbackDemo failed with error: ${err.code}, ${err.message}`);
  }
}

commitEditedAsset11+

commitEditedAsset(editData: string, uri: string): Promise<void>

提交编辑数据以及编辑后的图片或视频,该方法使用promise形式来返回结果。

通过uri将编辑后的文件传递给媒体库,uri是编辑后的文件在应用沙箱下的FileUri,可参考FileUri

注意:新的编辑数据提交后,将覆盖掉原来的编辑数据。

系统接口:此接口为系统接口。

需要权限:ohos.permission.WRITE_IMAGEVIDEO

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
editData string 提交的编辑数据。
uri string 提交的编辑后的图片或视频,在应用沙箱下的uri。

返回值:

类型 说明
Promise<void> Promise对象,返回void。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
201 Permission denied.
202 Called by non-system application.
401 if parameter is invalid.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';

async function example() {
  try {
    console.info('commitEditedAssetPromiseDemo')
    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
    let fetchOptions: photoAccessHelper.FetchOptions = {
      fetchColumns: [],
      predicates: predicates
    };
    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions);
    let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
    let editData = '123456';
    let uri = 'file://com.example.temptest/data/storage/el2/base/haps/entry/files/test.jpg';
    await photoAsset.commitEditedAsset(editData, uri);
    console.info('commitEditedAsset is successful');
  } catch (err) {
    console.error(`commitEditedAssetPromiseDemo failed with error: ${err.code}, ${err.message}`);
  }
}

revertToOriginal11+

revertToOriginal(callback: AsyncCallback<void>)

回退到编辑前的状态,该方法使用callback形式来返回结果。

注意:调用该接口后,编辑数据和编辑后的图片或视频资源都将被删除,无法恢复,请谨慎调用。

系统接口:此接口为系统接口。

需要权限:ohos.permission.WRITE_IMAGEVIDEO

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
callback AsyncCallback<void> Callback对象,返回void。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
201 Permission denied.
202 Called by non-system application.
401 if parameter is invalid.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';

async function example() {
  try {
    console.info('revertToOriginalCallbackDemo')
    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
    let fetchOptions: photoAccessHelper.FetchOptions = {
      fetchColumns: [],
      predicates: predicates
    };
    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions);
    let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
    photoAsset.revertToOriginal((err) => {
      if (err === undefined) {
        console.info('revertToOriginal is successful');
      } else {
        console.error(`revertToOriginal failed with error: ${err.code}, ${err.message}`);
      }
    });
  } catch (err) {
    console.error(`revertToOriginalCallbackDemo failed with error: ${err.code}, ${err.message}`);
  }
}

revertToOriginal11+

revertToOriginal(): Promise<void>

回退到编辑前的状态,该方法使用promise形式来返回结果。

注意:调用该接口后,编辑数据和编辑后的图片或视频资源都将被删除,无法恢复,请谨慎调用。

系统接口:此接口为系统接口。

需要权限:ohos.permission.WRITE_IMAGEVIDEO

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

返回值:

类型 说明
Promise<string> Promise对象,返回void。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
201 Permission denied.
202 Called by non-system application.
401 if parameter is invalid.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';

async function example() {
  try {
    console.info('revertToOriginalPromiseDemo')
    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
    let fetchOptions: photoAccessHelper.FetchOptions = {
      fetchColumns: [],
      predicates: predicates
    };
    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions);
    let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
    photoAsset.revertToOriginal();
    console.info('revertToOriginal is successful');
  } catch (err) {
    console.error(`revertToOriginalPromiseDemo failed with error: ${err.code}, ${err.message}`);
  }
}

requestPhoto11+

requestPhoto(callback: AsyncCallback<image.PixelMap>): string

通过callback的形式,获取资源的快速缩略图和普通缩略图。

快速缩略图尺寸为128*128,普通缩略图尺寸为256*256。应用调用接口后,callback将返回两次缩略图对象,第一次为快速缩略图,第二次为普通缩略图。

系统接口:此接口为系统接口。

需要权限:ohos.permission.READ_IMAGEVIDEO

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
callback AsyncCallback<image.PixelMap> Callback对象,返回获取的缩略图,调用2次。

返回值:

类型 说明
string 本次获取任务的id。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
201 Permission denied.
202 Called by non-system application.
401 if parameter is invalid.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';
import image from '@ohos.multimedia.image'

async function example() {
  try {
    console.info('requestPhotoDemo')
    let options: photoAccessHelper.FetchOptions = {
      fetchColumns: [],
      predicates: new dataSharePredicates.DataSharePredicates()
    }
    let fetchResult = await phAccessHelper.getAssets(options);
    let photoAsset = await fetchResult.getFirstObject();
    let taskId: string = photoAsset.requestPhoto(async (err, pixel: image.PixelMap) => {
      if (err === undefined) {
        console.info("requestSource in, size: " + JSON.stringify((await pixel.getImageInfo()).size))
      } else {
        console.error(`requestSource failed with error: ${err.code}, ${err.message}`);
      }
    })
    console.info('requestSource taskId: ' + taskId)
  } catch (err) {
    console.error(`requestPhotoDemo failed with error: ${err.code}, ${err.message}`);
  }
}

requestPhoto11+

requestPhoto(options: RequestPhotoOptions, callback: AsyncCallback<image.PixelMap>): string

通过callback的形式,根据传入的选项,获取资源的缩略图。

系统接口:此接口为系统接口。

需要权限:ohos.permission.READ_IMAGEVIDEO

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
options RequestPhotoOptions 获取资源缩略图的选项。
callback AsyncCallback<image.PixelMap> Callback对象,返回获取的缩略图,根据选项的设置可能调用超过1次。

返回值:

类型 说明
string 本次获取任务的id。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
201 Permission denied.
202 Called by non-system application.
401 if parameter is invalid.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';
import image from '@ohos.multimedia.image'

async function example() {
  try {
    console.info('requestPhotoDemo')
    let options: photoAccessHelper.FetchOptions = {
      fetchColumns: [],
      predicates: new dataSharePredicates.DataSharePredicates()
    }
    let fetchResult = await phAccessHelper.getAssets(options);
    let photoAsset = await fetchResult.getFirstObject();
    let taskId: string = photoAsset.requestPhoto({
      "size": {
        "width": 256,
        "height": 256
      },
      "requestPhotoType": photoAccessHelper.RequestPhotoType.REQUEST_ALL_THUMBNAILS
    }, async (err, pixel: image.PixelMap) => {
      if (err === undefined) {
        console.info("requestSource in, size: " + JSON.stringify((await pixel.getImageInfo()).size))
      } else {
        console.error(`requestSource failed with error: ${err.code}, ${err.message}`);
      }
    })
    console.info('requestSource taskId: ' + taskId)
  } catch (err) {
    console.error(`requestPhotoDemo failed with error: ${err.code}, ${err.message}`);
  }
}

cancelPhotoRequest11+

cancelPhotoRequest(requestId: string): void

根据id取消指定的获取媒体缩略图的任务。

系统接口:此接口为系统接口。

需要权限:ohos.permission.READ_IMAGEVIDEO

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
requestId string 待取消的获取媒体缩略图的任务id。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
201 Permission denied.
202 Called by non-system application.
401 if parameter is invalid.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';
import image from '@ohos.multimedia.image'

async function example() {
  try {
    console.info('cancelPhotoRequestDemo')
    let options: photoAccessHelper.FetchOptions = {
      fetchColumns: [],
      predicates: new dataSharePredicates.DataSharePredicates()
    }
    let fetchResult = await phAccessHelper.getAssets(options);
    let photoAsset = await fetchResult.getFirstObject();
    let taskId: string = photoAsset.requestPhoto({
      "size": {
        "width": 256,
        "height": 256
      },
      "requestPhotoType": photoAccessHelper.RequestPhotoType.REQUEST_ALL_THUMBNAILS
    }, async (err, pixel: image.PixelMap) => {
      if (err === undefined) {
        console.info("requestSource in, size: " + JSON.stringify((await pixel.getImageInfo()).size))
      } else {
        console.error(`requestSource failed with error: ${err.code}, ${err.message}`);
      }
    })
    console.info('requestSource taskId: ' + taskId)
    photoAsset.cancelPhotoRequest(taskId);
  } catch (err) {
    console.error(`cancelPhotoRequestDemo failed with error: ${err.code}, ${err.message}`);
  }
}

getAnalysisData11+

getAnalysisData(analysisType: AnalysisType): Promise<string>

根据智慧分析类型获取指定分析结果数据。

系统接口:此接口为系统接口。

需要权限:ohos.permission.READ_IMAGEVIDEO

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
analysisType AnalysisType 需要获取的智慧分析类型。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
201 Permission denied.
202 Called by non-system application.
401 if parameter is invalid.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';

async function example() {
  try {
    console.info('getAnalysisDataDemo')
    let fetchOptions: photoAccessHelper.FetchOptions = {
      fetchColumns: [],
      predicates: new dataSharePredicates.DataSharePredicates()
    }
    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> =
      await phAccessHelper.getAssets(fetchOptions);
    let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
    if (photoAsset != undefined) {
      let analysisData: string = await photoAsset.getAnalysisData(
        photoAccessHelper.AnalysisType.ANALYSIS_OCR);
      console.info('get ocr result: ' + JSON.stringify(analysisData));
    }
    fetchResult.close();
  } catch (err) {
    console.error(`getAnalysisDataDemofailed with error: ${err.code}, ${err.message}`);
  }
}

Album

实体相册

recoverAssets(deprecated)

recoverAssets(assets: Array<PhotoAsset>, callback: AsyncCallback<void>): void

从回收站中恢复图片或者视频,需要先在回收站中预置文件资源。该方法使用callback形式来返回结果。

说明:

从API version 10开始支持,从API version 11开始废弃。建议使用MediaAlbumChangeRequest.recoverAssets替代。

系统接口:此接口为系统接口。

需要权限:ohos.permission.WRITE_IMAGEVIDEO

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
assets Array<PhotoAsset> 回收站中待恢复图片或者视频数组。
callback AsyncCallback<void> callback返回void。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if parameter is invalid.
13900012 Permission denied.
13900020 Invalid argument.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';

async function example() {
  try {
    console.info('recoverAssetsDemoCallback');
    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
    let fetchOption: photoAccessHelper.FetchOptions = {
      fetchColumns: [],
      predicates: predicates
    };
    let albumFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.SYSTEM, photoAccessHelper.AlbumSubtype.TRASH);
    let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject();
    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await album.getAssets(fetchOption);
    let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
    album.recoverAssets([asset], (err) => {
      if (err === undefined) {
        console.info('album recoverAssets successfully');
      } else {
        console.error(`album recoverAssets failed with error: ${err.code}, ${err.message}`);
      }
    });
  } catch (err) {
    console.error(`recoverAssetsDemoCallback failed with error: ${err.code}, ${err.message}`);
  }
}

recoverAssets(deprecated)

recoverAssets(assets: Array<PhotoAsset>): Promise<void>

从回收站中恢复图片或者视频,需要先在回收站中预置文件资源。该方法使用Promise来返回结果。

说明:

从API version 10开始支持,从API version 11开始废弃。建议使用MediaAlbumChangeRequest.recoverAssets替代。

系统接口:此接口为系统接口。

需要权限:ohos.permission.WRITE_IMAGEVIDEO

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
assets Array<PhotoAsset> 回收站中待恢复图片或者视频数组。

返回值:

类型 说明
Promise<void> Promise对象,返回void。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if parameter is invalid.
13900012 Permission denied.
13900020 Invalid argument.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';
import { BusinessError } from '@ohos.base';

async function example() {
  try {
    console.info('recoverAssetsDemoPromise');
    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
    let fetchOption: photoAccessHelper.FetchOptions = {
      fetchColumns: [],
      predicates: predicates
    };
    let albumFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.SYSTEM, photoAccessHelper.AlbumSubtype.TRASH);
    let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject();
    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await album.getAssets(fetchOption);
    let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
    album.recoverAssets([asset]).then(() => {
      console.info('album recoverAssets successfully');
    }).catch((err: BusinessError) => {
      console.error(`album recoverAssets failed with error: ${err.code}, ${err.message}`);
    });
  } catch (err) {
    console.error(`recoverAssetsDemoPromise failed with error: ${err.code}, ${err.message}`);
  }
}

deleteAssets(deprecated)

deleteAssets(assets: Array<PhotoAsset>, callback: AsyncCallback<void>): void

从回收站中彻底删除图片或者视频,需要先在回收站中预置文件资源。该方法使用callback形式来返回结果。

说明:

从API version 10开始支持,从API version 11开始废弃。建议使用MediaAlbumChangeRequest.deleteAssets替代。

注意:此操作不可逆,执行此操作后文件资源将彻底删除,请谨慎操作。

系统接口:此接口为系统接口。

需要权限:ohos.permission.WRITE_IMAGEVIDEO

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
assets Array<PhotoAsset> 回收站中待彻底删除图片或者视频数组。
callback AsyncCallback<void> callback返回void。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if parameter is invalid.
13900012 Permission denied.
13900020 Invalid argument.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';

async function example() {
  try {
    console.info('deleteAssetsDemoCallback');
    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
    let fetchOption: photoAccessHelper.FetchOptions = {
      fetchColumns: [],
      predicates: predicates
    };
    let albumFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.SYSTEM, photoAccessHelper.AlbumSubtype.TRASH);
    let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject();
    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await album.getAssets(fetchOption);
    let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
    album.deleteAssets([asset], (err) => {
      if (err === undefined) {
        console.info('album deleteAssets successfully');
      } else {
        console.error(`album deleteAssets failed with error: ${err.code}, ${err.message}`);
      }
    });
  } catch (err) {
    console.error(`deleteAssetsDemoCallback failed with error: ${err.code}, ${err.message}`);
  }
}

deleteAssets(deprecated)

deleteAssets(assets: Array<PhotoAsset>): Promise<void>

从回收站中彻底删除图片或者视频,需要先在回收站中预置文件资源。该方法使用Promise来返回结果。

说明:

从API version 10开始支持,从API version 11开始废弃。建议使用MediaAlbumChangeRequest.deleteAssets替代。

注意:此操作不可逆,执行此操作后文件资源将彻底删除,请谨慎操作。

系统接口:此接口为系统接口。

需要权限:ohos.permission.WRITE_IMAGEVIDEO

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
assets Array<PhotoAsset> 回收站中待彻底删除图片或者视频数组。

返回值:

类型 说明
Promise<void> Promise对象,返回void。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if parameter is invalid.
13900012 Permission denied.
13900020 Invalid argument.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';
import { BusinessError } from '@ohos.base';

async function example() {
  try {
    console.info('deleteAssetsDemoPromise');
    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
    let fetchOption: photoAccessHelper.FetchOptions = {
      fetchColumns: [],
      predicates: predicates
    };
    let albumFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.SYSTEM, photoAccessHelper.AlbumSubtype.TRASH);
    let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject();
    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await album.getAssets(fetchOption);
    let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
    album.deleteAssets([asset]).then(() => {
      console.info('album deleteAssets successfully');
    }).catch((err: BusinessError) => {
      console.error(`album deleteAssets failed with error: ${err.code}, ${err.message}`);
    });
  } catch (err) {
    console.error(`deleteAssetsDemoPromise failed with error: ${err.code}, ${err.message}`);
  }
}

setCoverUri(deprecated)

setCoverUri(uri: string, callback: AsyncCallback<void>): void

设置相册封面,该方法使用callback形式来返回结果。

说明:

从API version 10开始支持,从API version 11开始废弃。建议使用MediaAlbumChangeRequest.setCoverUri替代。

注意:此接口只可修改用户相册封面,不允许修改系统相册封面。

系统接口:此接口为系统接口。

需要权限:ohos.permission.WRITE_IMAGEVIDEO

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
uri string 待设置为相册封面文件的uri。
callback AsyncCallback<void> callback返回void。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if parameter is invalid.
13900012 Permission denied.
13900020 Invalid argument.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';

async function example() {
  try {
    console.info('setCoverUriDemoCallback');
    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
    let fetchOption: photoAccessHelper.FetchOptions = {
      fetchColumns: [],
      predicates: predicates
    };
    let albumFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC);
    let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject();
    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await album.getAssets(fetchOption);
    let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
    album.setCoverUri(asset.uri, (err) => {
      if (err === undefined) {
        console.info('album setCoverUri successfully');
      } else {
        console.error(`album setCoverUri failed with error: ${err.code}, ${err.message}`);
      }
    });
  } catch (err) {
    console.error(`setCoverUriDemoCallback failed with error: ${err.code}, ${err.message}`);
  }
}

setCoverUri(deprecated)

setCoverUri(uri: string): Promise<void>

设置相册封面,该方法使用Promise来返回结果。

说明:

从API version 10开始支持,从API version 11开始废弃。建议使用MediaAlbumChangeRequest.setCoverUri替代。

注意:此接口只可修改用户相册封面,不允许修改系统相册封面。

系统接口:此接口为系统接口。

需要权限:ohos.permission.WRITE_IMAGEVIDEO

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
uri string 待设置为相册封面文件的uri。

返回值:

类型 说明
Promise<void> Promise对象,返回void。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if parameter is invalid.
13900012 Permission denied.
13900020 Invalid argument.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';
import { BusinessError } from '@ohos.base';

async function example() {
  try {
    console.info('setCoverUriDemoPromise');
    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
    let fetchOption: photoAccessHelper.FetchOptions = {
      fetchColumns: [],
      predicates: predicates
    };
    let albumFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC);
    let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject();
    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await album.getAssets(fetchOption);
    let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
    album.setCoverUri(asset.uri).then(() => {
      console.info('album setCoverUri successfully');
    }).catch((err: BusinessError) => { 
      console.error(`album setCoverUri failed with error: ${err.code}, ${err.message}`);
    });
  } catch (err) {
    console.error(`setCoverUriDemoPromise failed with error: ${err.code}, ${err.message}`);
  }
}

MediaAssetEditData11+

资产编辑数据。

系统接口:此接口为系统接口。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

属性

名称 类型 可读 可写 说明
compatibleFormat string 编辑数据的格式。系统接口:此接口为系统接口。
formatVersion string 编辑数据格式的版本。系统接口:此接口为系统接口。
data string 编辑数据的内容。系统接口:此接口为系统接口。

constructor11+

constructor(compatibleFormat: string, formatVersion: string)

构造函数。

系统接口:此接口为系统接口。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
compatibleFormat string 编辑数据的格式。
formatVersion string 编辑数据格式的版本。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if parameter is invalid.
14000011 System inner fail.

示例:

let assetEditData: photoAccessHelper.MediaAssetEditData = new photoAccessHelper.MediaAssetEditData('system', '1.0');

MediaAssetChangeRequest11+

资产变更请求。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

createAssetRequest11+

static createAssetRequest(context: Context, displayName: string, options?: PhotoCreateOptions): MediaAssetChangeRequest

指定待创建的图片或者视频的文件名,创建资产变更请求。

待创建的文件名参数规格为:

  • 应包含有效文件主名和图片或视频扩展名。
  • 文件名字符串长度为1~255。
  • 文件主名中不允许出现非法字符,包括:
    . .. \ / : * ? " ' ` < > | { } [ ]

系统接口:此接口为系统接口。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
context Context 传入Ability实例的Context。
displayName string 待创建的图片或者视频文件名。
options PhotoCreateOptions 图片或视频的创建选项。

返回值:

类型 说明
MediaAssetChangeRequest 返回创建资产的变更请求。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if parameter is invalid.
14000001 Invalid display name.
14000011 System inner fail.

示例:

async function example() {
  console.info('createAssetRequestDemo');
  try {
    let testFileName: string = 'testFile' + Date.now() + '.jpg';
    let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = photoAccessHelper.MediaAssetChangeRequest.createAssetRequest(context, testFileName);
    // 需要确保fileUri对应的资源存在
    let fileUri = 'file://com.example.temptest/data/storage/el2/base/haps/entry/files/test.jpg';
    assetChangeRequest.addResource(photoAccessHelper.ResourceType.IMAGE_RESOURCE, fileUri);
    await phAccessHelper.applyChanges(assetChangeRequest);
    console.info('apply createAssetRequest successfully');
  } catch (err) {
    console.error(`createAssetRequestDemo failed with error: ${err.code}, ${err.message}`);
  }
}

setFavorite11+

setFavorite(favoriteState: boolean): void

将文件设置为收藏文件。

系统接口:此接口为系统接口。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
favoriteState boolean 是否设置为收藏文件, true:设置为收藏文件;false:取消收藏。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if parameter is invalid.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';
import { BusinessError } from '@ohos.base';

async function example() {
  console.info('setFavoriteDemo');
  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
  let fetchOption: photoAccessHelper.FetchOptions = {
    fetchColumns: [],
    predicates: predicates
  };
  let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption);
  let asset = await fetchResult.getFirstObject();
  let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = new photoAccessHelper.MediaAssetChangeRequest(asset);
  assetChangeRequest.setFavorite(true);
  phAccessHelper.applyChanges(assetChangeRequest).then(() => {
    console.info('apply setFavorite successfully');
  }).catch((err: BusinessError) => {
    console.error(`apply setFavorite failed with error: ${err.code}, ${err.message}`);
  });
}

setHidden11+

setHidden(hiddenState: boolean): void

将文件设置为隐藏文件。

系统接口:此接口为系统接口。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
hiddenState boolean 是否设置为隐藏文件,true:将文件资产放入隐藏相册;false:从隐藏相册中恢复。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if parameter is invalid.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';
import { BusinessError } from '@ohos.base';

async function example() {
  console.info('setHiddenDemo');
  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
  let fetchOption: photoAccessHelper.FetchOptions = {
    fetchColumns: [],
    predicates: predicates
  };
  let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption);
  let asset = await fetchResult.getFirstObject();
  let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = new photoAccessHelper.MediaAssetChangeRequest(asset);
  assetChangeRequest.setHidden(true);
  phAccessHelper.applyChanges(assetChangeRequest).then(() => {
    console.info('apply setHidden successfully');
  }).catch((err: BusinessError) => {
    console.error(`apply setHidden failed with error: ${err.code}, ${err.message}`);
  });
}

setUserComment11+

setUserComment(userComment: string): void

修改媒体资产的备注信息。

系统接口:此接口为系统接口。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
userComment string 待修改的资产备注信息,备注信息最长为420字符。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if parameter is invalid.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';
import { BusinessError } from '@ohos.base';

async function example() {
  console.info('setUserCommentDemo');
  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
  let fetchOption: photoAccessHelper.FetchOptions = {
    fetchColumns: [],
    predicates: predicates
  };
  let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption);
  let asset = await fetchResult.getFirstObject();
  let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = new photoAccessHelper.MediaAssetChangeRequest(asset);
  let userComment: string = 'test_set_user_comment';
  assetChangeRequest.setUserComment(userComment);
  phAccessHelper.applyChanges(assetChangeRequest).then(() => {
    console.info('apply setUserComment successfully');
  }).catch((err: BusinessError) => {
    console.error(`apply setUserComment failed with error: ${err.code}, ${err.message}`);
  });
}

setEditData11+

setEditData(editData: MediaAssetEditData): void

保存资产的编辑数据。

系统接口:此接口为系统接口。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
editData MediaAssetEditData 待保存的资产编辑数据。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if parameter is invalid.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';
import { BusinessError } from '@ohos.base';

async function example() {
  console.info('setEditDataDemo');
  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
  let fetchOption: photoAccessHelper.FetchOptions = {
    fetchColumns: [],
    predicates: predicates
  };
  let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption);
  let asset = await fetchResult.getFirstObject();
  let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = new photoAccessHelper.MediaAssetChangeRequest(asset);

  let assetEditData: photoAccessHelper.MediaAssetEditData = new photoAccessHelper.MediaAssetEditData('system', '1.0');
  let fileUri = 'file://com.example.temptest/data/storage/el2/base/haps/entry/files/test.jpg';
  assetChangeRequest.addResource(photoAccessHelper.ResourceType.IMAGE_RESOURCE, fileUri);
  assetEditData.data = '123456';
  assetChangeRequest.setEditData(assetEditData);
  phAccessHelper.applyChanges(assetChangeRequest).then(() => {
    console.info('apply setEditData successfully');
  }).catch((err: BusinessError) => {
    console.error(`apply setEditData failed with error: ${err.code}, ${err.message}`);
  });
}

addResource11+

addResource(type: ResourceType, proxy: PhotoProxy): void

通过PhotoProxy数据添加资源。

注意:对于同一个资产变更请求,不支持在成功添加资源后,重复调用该接口。

系统接口:此接口为系统接口,仅提供给相机应用使用。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
type ResourceType 待添加资源的类型。
proxy PhotoProxy 待添加资源的PhotoProxy 数据。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if parameter is invalid.
14000011 System inner fail.
14000016 Operation Not Support.

示例:

class PhotoProxyImpl implements photoAccessHelper.PhotoProxy {
  // 应用实现PhotoProxy
}

async function example() {
  console.info('addResourceByPhotoProxyDemo');
  try {
    let photoType: photoAccessHelper.PhotoType = photoAccessHelper.PhotoType.IMAGE;
    let extension: string = 'jpg';
    let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = photoAccessHelper.MediaAssetChangeRequest.createAssetRequest(context, photoType, extension);
    let photoProxy: PhotoProxyImpl = new PhotoProxyImpl();
    assetChangeRequest.addResource(photoAccessHelper.ResourceType.IMAGE_RESOURCE, photoProxy);
    await phAccessHelper.applyChanges(assetChangeRequest);
    console.info('addResourceByPhotoProxy successfully');
  } catch (err) {
    console.error(`addResourceByPhotoProxyDemo failed with error: ${err.code}, ${err.message}`);
  }
}

setLocation11+

setLocation(longitude: number, latitude: number): void

设置文件的经纬度信息。

系统接口:此接口为系统接口

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
longitude number 经度。
latitude number 纬度。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if parameter is invalid.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';
import { BusinessError } from '@ohos.base';

async function example() {
  console.info('setLocationDemo');
  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
  let fetchOption: photoAccessHelper.FetchOptions = {
    fetchColumns: [],
    predicates: predicates
  };
  let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption);
  let asset = await fetchResult.getFirstObject();
  let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = new photoAccessHelper.MediaAssetChangeRequest(asset);
  assetChangeRequest.setLocation(120.52, 30.40);
  phAccessHelper.applyChanges(assetChangeRequest).then(() => {
    console.info('apply setLocation successfully');
  }).catch((err: BusinessError) => {
    console.error(`apply setLocation failed with error: ${err.code}, ${err.message}`);
  });
}

MediaAssetsChangeRequest11+

批量资产变更请求。

系统接口:此接口为系统接口。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

constructor11+

constructor(assets: Array<PhotoAsset>)

构造函数。

系统接口:此接口为系统接口。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
assets Array<PhotoAsset> 需要变更的资产数组。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if parameter is invalid.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';

async function example() {
  console.info('MediaAssetsChangeRequest constructorDemo');
  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
  let fetchOption: photoAccessHelper.FetchOptions = {
    fetchColumns: [],
    predicates: predicates
  };
  let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption);
  let photoAssetList: Array<photoAccessHelper.PhotoAsset> = await fetchResult.getAllObjects();
  let assetsChangeRequest: photoAccessHelper.MediaAssetsChangeRequest = new photoAccessHelper.MediaAssetsChangeRequest(photoAssetList);
}

setFavorite11+

setFavorite(favoriteState: boolean): void

将文件设置为收藏文件。

系统接口:此接口为系统接口。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
favoriteState boolean 是否设置为收藏文件, true:设置为收藏文件;false:取消收藏。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if parameter is invalid.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';
import { BusinessError } from '@ohos.base';

async function example() {
  console.info('setFavoriteDemo');
  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
  let fetchOption: photoAccessHelper.FetchOptions = {
    fetchColumns: [],
    predicates: predicates
  };
  let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption);
  let photoAssetList: Array<photoAccessHelper.PhotoAsset> = await fetchResult.getAllObjects();
  let assetsChangeRequest: photoAccessHelper.MediaAssetsChangeRequest = new photoAccessHelper.MediaAssetsChangeRequest(photoAssetList);
  assetsChangeRequest.setFavorite(true);
  phAccessHelper.applyChanges(assetsChangeRequest).then(() => {
    console.info('apply setFavorite successfully');
  }).catch((err: BusinessError) => {
    console.error(`apply setFavorite failed with error: ${err.code}, ${err.message}`);
  });
}

setHidden11+

setHidden(hiddenState: boolean): void

将文件设置为隐藏文件。

系统接口:此接口为系统接口。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
hiddenState boolean 是否设置为隐藏文件,true:将文件资产放入隐藏相册;false:从隐藏相册中恢复。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if parameter is invalid.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';
import { BusinessError } from '@ohos.base';

async function example() {
  console.info('setHiddenDemo');
  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
  let fetchOption: photoAccessHelper.FetchOptions = {
    fetchColumns: [],
    predicates: predicates
  };
  let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption);
  let photoAssetList: Array<photoAccessHelper.PhotoAsset> = await fetchResult.getAllObjects();
  let assetsChangeRequest: photoAccessHelper.MediaAssetsChangeRequest = new photoAccessHelper.MediaAssetsChangeRequest(photoAssetList);
  assetsChangeRequest.setHidden(true);
  phAccessHelper.applyChanges(assetsChangeRequest).then(() => {
    console.info('apply setHidden successfully');
  }).catch((err: BusinessError) => {
    console.error(`apply setHidden failed with error: ${err.code}, ${err.message}`);
  });
}

setUserComment11+

setUserComment(userComment: string): void

修改媒体资产的备注信息。

系统接口:此接口为系统接口。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
userComment string 待修改的资产备注信息,备注信息最长为420字符。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if parameter is invalid.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';
import { BusinessError } from '@ohos.base';

async function example() {
  console.info('setUserCommentDemo');
  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
  let fetchOption: photoAccessHelper.FetchOptions = {
    fetchColumns: [],
    predicates: predicates
  };
  let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption);
  let photoAssetList: Array<photoAccessHelper.PhotoAsset> = await fetchResult.getAllObjects();
  let assetsChangeRequest: photoAccessHelper.MediaAssetsChangeRequest = new photoAccessHelper.MediaAssetsChangeRequest(photoAssetList);
  assetsChangeRequest.setUserComment('test_set_user_comment');
  phAccessHelper.applyChanges(assetsChangeRequest).then(() => {
    console.info('apply setUserComment successfully');
  }).catch((err: BusinessError) => {
    console.error(`apply setUserComment failed with error: ${err.code}, ${err.message}`);
  });
}

MediaAlbumChangeRequest11+

相册变更请求。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

createAlbumRequest11+

static createAlbumRequest(context: Context, name: string): MediaAlbumChangeRequest

创建相册变更请求。

相册名的参数规格为:

  • 相册名字符串长度为1~255。
  • 不允许出现非法字符,包括:
    . .. \ / : * ? " ' ` < > | { } [ ]
  • 英文字符大小写不敏感。
  • 相册名不允许重名。

系统接口:此接口为系统接口。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
context Context 传入Ability实例的Context。
name string 待创建相册的名称。

返回值:

类型 说明
MediaAlbumChangeRequest 返回创建相册的变更请求。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if parameter is invalid.
14000011 System inner fail.

示例:

async function example() {
  console.info('createAlbumRequestDemo');
  try {
    let albumName: string = 'newAlbumName' + new Date().getTime();
    let albumChangeRequest: photoAccessHelper.MediaAlbumChangeRequest = photoAccessHelper.MediaAlbumChangeRequest.createAlbumRequest(context, albumName);
    await phAccessHelper.applyChanges(albumChangeRequest);
    console.info('apply createAlbumRequest successfully');
  } catch (err) {
    console.error(`createAlbumRequestDemo failed with error: ${err.code}, ${err.message}`);
  }
}

deleteAlbums11+

static deleteAlbums(context: Context, albums: Array<Album>): Promise<void>

删除相册,使用Promise方式返回结果。

删除相册前需先确保相册存在,只能删除用户相册。

系统接口:此接口为系统接口。

需要权限:ohos.permission.WRITE_IMAGEVIDEO

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
context Context 传入Ability实例的Context。
albums Array<Album> 待删除的相册数组。

返回值:

类型 说明
Promise<void> Promise对象,返回void。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
201 Permission denied.
202 Called by non-system application.
401 if parameter is invalid.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';

async function example() {
  console.info('deleteAlbumsDemo');
  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
  let fetchOptions: photoAccessHelper.FetchOptions = {
    fetchColumns: [],
    predicates: predicates
  };
  try {
    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC, fetchOptions);
    let album: photoAccessHelper.Album = await fetchResult.getFirstObject();
    await photoAccessHelper.MediaAlbumChangeRequest.deleteAlbums(context, [album]);
    console.info('deleteAlbums successfully');
  } catch (err) {
    console.error(`deleteAlbumsDemo failed with error: ${err.code}, ${err.message}`);
  }
}

setCoverUri11+

setCoverUri(coverUri: string): void

设置相册封面。

系统接口:此接口为系统接口。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
coverUri string 待设置为相册封面文件的uri。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if parameter is invalid.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';

async function example() {
  console.info('setCoverUriDemo');
  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
  let fetchOptions: photoAccessHelper.FetchOptions = {
    fetchColumns: [],
    predicates: predicates
  };
  try {
    let albumFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC);
    let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject();
    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await album.getAssets(fetchOptions);
    let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();

    let albumChangeRequest: photoAccessHelper.MediaAlbumChangeRequest = new photoAccessHelper.MediaAlbumChangeRequest(album);
    albumChangeRequest.setCoverUri(asset.uri);
    await phAccessHelper.applyChanges(albumChangeRequest);
    console.info('setCoverUri successfully');
  } catch (err) {
    console.error(`setCoverUriDemo failed with error: ${err.code}, ${err.message}`);
  }
}

moveAssets11+

moveAssets(assets: Array<PhotoAsset>, targetAlbum: Album): void

从相册中移动资产到另一个目标相册。

系统接口:此接口为系统接口。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
assets Array<PhotoAsset> 待从相册中移出的资产数组。
targetAlbum Album 待移入资产的目标相册。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if parameter is invalid.
14000011 System inner fail.
14000016 Operation Not Support.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';

async function example() {
  console.info('moveAssetsDemo');
  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
  let fetchOptions: photoAccessHelper.FetchOptions = {
    fetchColumns: [],
    predicates: predicates
  };
  try {
    let albumFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC);
    let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject();
    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await album.getAssets(fetchOptions);
    let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();

    if (albumFetchResult.isAfterLast()) {
      console.error('lack of album to be moved into');
      return;
    }
    let nextAlbum: photoAccessHelper.Album = await albumFetchResult.getNextObject();
    let albumChangeRequest: photoAccessHelper.MediaAlbumChangeRequest = new photoAccessHelper.MediaAlbumChangeRequest(album);
    albumChangeRequest.moveAssets([asset], nextAlbum);
    await phAccessHelper.applyChanges(albumChangeRequest);
    console.info('moveAssets successfully');
  } catch (err) {
    console.error(`moveAssetsDemo failed with error: ${err.code}, ${err.message}`);
  }
}

recoverAssets11+

recoverAssets(assets: Array<PhotoAsset>): void

从回收站中恢复资产。

系统接口:此接口为系统接口。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
assets Array<PhotoAsset> 待从回收站中恢复的资产数组。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if parameter is invalid.
14000011 System inner fail.
14000016 Operation Not Support.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';

async function example() {
  console.info('recoverAssetsDemo');
  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
  let fetchOptions: photoAccessHelper.FetchOptions = {
    fetchColumns: [],
    predicates: predicates
  };
  try {
    let albumFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.SYSTEM, photoAccessHelper.AlbumSubtype.TRASH);
    let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject();
    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await album.getAssets(fetchOptions);
    let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();

    let albumChangeRequest: photoAccessHelper.MediaAlbumChangeRequest = new photoAccessHelper.MediaAlbumChangeRequest(album);
    albumChangeRequest.recoverAssets([asset]);
    await phAccessHelper.applyChanges(albumChangeRequest);
    console.info('recoverAssets successfully');
  } catch (err) {
    console.error(`recoverAssetsDemo failed with error: ${err.code}, ${err.message}`);
  }
}

deleteAssets11+

deleteAssets(assets: Array<PhotoAsset>): void

从回收站中彻底删除资产。

注意:此操作不可逆,执行此操作后文件资源将彻底删除,请谨慎操作。

系统接口:此接口为系统接口。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
assets Array<PhotoAsset> 待从回收站中彻底删除的资产数组。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if parameter is invalid.
14000011 System inner fail.
14000016 Operation Not Support.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';

async function example() {
  console.info('deleteAssetsPermanentlyDemo');
  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
  let fetchOptions: photoAccessHelper.FetchOptions = {
    fetchColumns: [],
    predicates: predicates
  };
  try {
    let albumFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.SYSTEM, photoAccessHelper.AlbumSubtype.TRASH);
    let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject();
    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await album.getAssets(fetchOptions);
    let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();

    let albumChangeRequest: photoAccessHelper.MediaAlbumChangeRequest = new photoAccessHelper.MediaAlbumChangeRequest(album);
    albumChangeRequest.deleteAssets([asset]);
    await phAccessHelper.applyChanges(albumChangeRequest);
    console.info('succeed to deleteAssets permanently');
  } catch (err) {
    console.error(`deleteAssetsPermanentlyDemo failed with error: ${err.code}, ${err.message}`);
  }
}

setDisplayLevel11+

setDisplayLevel(displayLevel: number): void

设置人像相册的显示级别。

系统接口:此接口为系统接口。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
displayLevel number 设置人像相册的显示级别, 0:取消该人像相册收藏;1:设置人像相册为首届面;2:设置人像相册为更多界面;3:设置人像相册为收藏界面。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if parameter is invalid.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';

async function example() {
  try {
    console.info('setDisplayLevel Example')
    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
    predicates.equalTo('user_display_level', 2);
    let fetchOptions: photoAccessHelper.FetchOptions = {
      fetchColumns: [],
      predicates: predicates
    };
    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.SMART, photoAccessHelper.AlbumSubtype.PORTRAIT, fetchOptions);
    let album: photoAccessHelper.Album = await fetchResult.getFirstObject();
    let changeRequest: photoAccessHelper.MediaAlbumChangeRequest = new photoAccessHelper.MediaAlbumChangeRequest(album);
    changeRequest.setDisplayLevel(1);
    await phAccessHelper.applyChanges(changeRequest);
  } catch (err) {
    console.error(`setDisplayLevel failed with error: ${err.code}, ${err.message}`);
  }
}

setIsMe11+

setIsMe(): void

将人像相册的人物关系设置为“我”。

系统接口:此接口为系统接口。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if parameter is invalid.
14000011 System inner fail.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';

async function example() {
  try {
    console.info('setIsMe Example')
    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
    predicates.equalTo('user_display_level', 2);
    let fetchOptions: photoAccessHelper.FetchOptions = {
      fetchColumns: [],
      predicates: predicates
    };
    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.SMART, photoAccessHelper.AlbumSubtype.PORTRAIT, fetchOptions);
    let album: photoAccessHelper.Album = await fetchResult.getFirstObject();
    let changeRequest: photoAccessHelper.MediaAlbumChangeRequest = new photoAccessHelper.MediaAlbumChangeRequest(album);
    changeRequest.setIsMe();
    await phAccessHelper.applyChanges(changeRequest);
  } catch (err) {
    console.error(`setIsMe failed with error: ${err.code}, ${err.message}`);
  }
}

dismissAssets11+

dismissAssets(assets: Array<PhotoAsset>): void

从该人像相册中移除指定图片。

系统接口:此接口为系统接口。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
assets Array<PhotoAsset> 需要移除的文件列表 。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if parameter is invalid.
14000011 System inner fail.
14000016 Operation Not support.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';

async function example() {
  try {
    console.info('dismissAssets Example')
    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
    predicates.equalTo('user_display_level', 2);
    let fetchOptions: photoAccessHelper.FetchOptions = {
      fetchColumns: [],
      predicates: predicates
    };
    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.SMART, photoAccessHelper.AlbumSubtype.PORTRAIT, fetchOptions);
    let album: photoAccessHelper.Album = await fetchResult.getFirstObject();

    let predicatesAsset: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
    let assetFetchOptions: photoAccessHelper.FetchOptions = {
      fetchColumns: [],
      predicates: predicatesAsset
    };
    let assetFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(assetFetchOptions);
    let asset: photoAccessHelper.PhotoAsset = await assetFetchResult.getFirstObject();

    let changeRequest: photoAccessHelper.MediaAlbumChangeRequest = new photoAccessHelper.MediaAlbumChangeRequest(album);
    changeRequest.dismissAssets([asset]);
    await phAccessHelper.applyChanges(changeRequest);
  } catch (err) {
    console.error(`dismissAssets failed with error: ${err.code}, ${err.message}`);
  }
}

mergeAlbum11+

mergeAlbum(target: Album): void

将两个人像相册合并。

系统接口:此接口为系统接口。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
target Album 需要合并的目标相册,合并相册必须重命名。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if parameter is invalid.
14000011 System inner fail.
14000016 Operation Not support.

示例:

import dataSharePredicates from '@ohos.data.dataSharePredicates';

async function example() {
  try {
    console.info('mergeAlbum Example')
    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
    predicates.equalTo('user_display_level', 2);
    let fetchOptions: photoAccessHelper.FetchOptions = {
      fetchColumns: [],
      predicates: predicates
    };
    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.SMART, photoAccessHelper.AlbumSubtype.PORTRAIT, fetchOptions);
    let album: photoAccessHelper.Album = await fetchResult.getFirstObject();
    if (fetchResult.isAfterLast()) {
      console.error('lack of album to merge');
      return;
    }
    let target: photoAccessHelper.Album = await fetchResult.getNextObject();

    let changeRequest: photoAccessHelper.MediaAlbumChangeRequest = new photoAccessHelper.MediaAlbumChangeRequest(album);
    changeRequest.mergeAlbum(target);
    changeRequest.setAlbumName("testName");
    await phAccessHelper.applyChanges(changeRequest);
  } catch (err) {
    console.error(`mergeAlbum failed with error: ${err.code}, ${err.message}`);
  }
}

placeBefore11+

placeBefore(album: Album): void;

将当前相册排序到目标相册之前。

系统接口:此接口为系统接口。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

参数:

参数名 类型 必填 说明
album Album 目标相册。如果要将当前相册排序到末位,则目标相册传入null。

错误码:

接口抛出错误码的详细介绍请参见通用错误码文件管理错误码

错误码ID 错误信息
202 Called by non-system application.
401 if parameter is invalid.
14000011 System inner fail.

示例:

async function example() {
  console.info('placeBeforeDemo');
  try {
    let albumFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC);
    let firstAlbum: photoAccessHelper.Album = await albumFetchResult.getFirstObject();
    if (albumFetchResult.isAfterLast()) {
      console.error('lack of album to place before');
      return;
    }
    let secondAlbum: photoAccessHelper.Album = await albumFetchResult.getNextObject();
    let albumChangeRequest: photoAccessHelper.MediaAlbumChangeRequest = new photoAccessHelper.MediaAlbumChangeRequest(secondAlbum);
    albumChangeRequest.placeBefore(firstAlbum);
    await phAccessHelper.applyChanges(albumChangeRequest);
    console.info('placeBefore successfully');
  } catch (err) {
    console.error(`placeBeforeDemo failed with error: ${err.code}, ${err.message}`);
  }
}

PhotoSubtype

枚举,不同PhotoAsset的类型。

系统接口:此接口为系统接口。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

名称 说明
DEFAULT 0 默认照片类型。
SCREENSHOT 1 截屏录屏文件类型。

PositionType

枚举,文件位置,表示文件在本地或云端。

系统接口:此接口为系统接口。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

名称 说明
LOCAL 1 << 0 文件只存在于本端设备。
CLOUD 1 << 1 文件只存在于云端。

AlbumType

枚举,相册类型,表示是用户相册还是系统预置相册。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

名称 说明
SMART11+ 4096 智慧分析相册。系统接口:此接口为系统接口。

AlbumSubtype

枚举,相册子类型,表示具体的相册类型。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

名称 说明
HIDDEN 1027 隐藏相册。系统接口:此接口为系统接口。
TRASH 1028 回收站。系统接口:此接口为系统接口。
SCREENSHOT 1029 截屏和录屏相册。系统接口:此接口为系统接口。
CAMERA 1030 相机拍摄的照片和视频相册。系统接口:此接口为系统接口。
IMAGE11+ 1031 所有图片相册。系统接口:此接口为系统接口。
SOURCE_GENERIC11+ 2049 来源相册。系统接口:此接口为系统接口。
CLASSIFY11+ 4097 分类相册。系统接口:此接口为系统接口。
GEOGRAPHY_LOCATION11+ 4099 地图相册。系统接口:此接口为系统接口。
GEOGRAPHY_CITY11+ 4100 城市相册。系统接口:此接口为系统接口。
SHOOTING_MODE11+ 4101 拍摄模式相册。系统接口:此接口为系统接口。
PORTRAIT11+ 4102 人像相册。系统接口:此接口为系统接口。

RequestPhotoType11+

枚举,获取图片或视频缩略图的操作类型。

系统接口:此接口为系统接口。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

名称 说明
REQUEST_ALL_THUMBNAILS 0 即获取快速缩略图,又获取质量缩略图。
REQUEST_FAST_THUMBNAIL 1 只获取快速缩略图。
REQUEST_QUALITY_THUMBNAIL 2 只获取质量缩略图。

PhotoKeys

枚举,图片和视频文件关键信息。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

名称 说明
POSITION 'position' 文件位置类型。系统接口:此接口为系统接口。
DATE_TRASHED 'date_trashed' 删除日期(删除文件时间距1970年1月1日的秒数值)。系统接口:此接口为系统接口。
HIDDEN 'hidden' 文件的隐藏状态。系统接口:此接口为系统接口。
CAMERA_SHOT_KEY 'camera_shot_key' 锁屏相机拍照或录像的标记字段(仅开放给系统相机,其key值由系统相机定义)。系统接口:此接口为系统接口。
USER_COMMENT10+ 'user_comment' 用户注释信息。系统接口:此接口为系统接口。
DATE_YEAR11+ 'date_year' 创建文件的年份。系统接口:此接口为系统接口。
DATE_MONTH11+ 'date_month' 创建文件的月份。系统接口:此接口为系统接口。
DATE_DAY11+ 'date_day' 创建文件的日期。系统接口:此接口为系统接口。
PENDING11+ 'pending' pending状态。系统接口:此接口为系统接口。

HiddenPhotosDisplayMode11+

枚举,系统中隐藏文件显示模式。

系统接口:此接口为系统接口。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

名称 说明
ASSETS_MODE 0 按系统预置的隐藏相册显示隐藏文件,即显示系统中所有的隐藏文件。
ALBUMS_MODE 1 按相册显示隐藏文件(即显示系统中所有包含隐藏文件的相册,除系统预置的隐藏相册本身和回收站相册以外)。

PhotoCreateOptions

图片或视频的创建选项。

系统接口:此接口为系统接口。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

名称 类型 必填 说明
subtype PhotoSubtype 图片或者视频的子类型。
cameraShotKey string 锁屏相机拍照或录像的标记字段(仅开放给系统相机,其key值由系统相机定义)。

RequestPhotoOptions11+

获取图片或视频缩略图的选项。

系统接口:此接口为系统接口。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

名称 类型 必填 说明
size image.Size 获取缩略图的尺寸。
requestPhotoType RequestPhotoType 获取的操作类型。

RequestOptions11+

请求策略。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

名称 类型 可读 可写 说明
sourceMode SourceMode 资源文件的读取类型,可以指定当前请求获取的是源文件,或是编辑后的文件。系统接口:此接口为系统接口。

PhotoProxy11+

照片代理,相机应用通过该对象写入图片数据。

系统接口:此接口为系统接口。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

MediaChangeRequest11+

媒体变更请求,资产变更请求和相册变更请求的父类型。

注意:媒体变更请求需要在调用applyChanges后才会提交生效。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

FormInfo11+

图库卡片相关信息。

系统接口:此接口为系统接口。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

名称 类型 必填 说明
formId string 卡片的ID,由图库创建卡片时提供。
uri string 卡片绑定的图片的uri。创建卡片时uri可为空或图片的uri,移除卡片时uri不做校验,传空即可。

ResourceType11+

枚举,写入资源的类型。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

名称 说明
PHOTO_PROXY 3 表示照片代理资源。系统接口:此接口为系统接口。

DefaultChangeUri

枚举,DefaultChangeUri子类型。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

名称 说明
DEFAULT_HIDDEN_ALBUM_URI11+ 'file://media/HiddenAlbum' 隐藏相册-相册视图中相册的Uri,即系统中包含隐藏文件的相册(不包含系统预置隐藏相册和回收站相册)的Uri,仅用于隐藏相册-相册视图场景的通知。系统接口:此接口为系统接口。

SourceMode11+

枚举,资源文件的读取类型。

系统接口:此接口为系统接口。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

名称 说明
ORIGINAL_MODE 0 读取源文件。
EDITED_MODE 1 读取编辑后的文件。

AnalysisType11+

枚举,智慧分析类型。

系统能力:SystemCapability.FileManagement.PhotoAccessHelper.Core

名称 说明
ANALYSIS_AESTHETICS_SCORE 0 美学评分分析类别。系统接口:此接口为系统接口。
ANALYSIS_LABEL 1 分类标签分析类别。系统接口:此接口为系统接口。
ANALYSIS_OCR 2 文字识别分析类别。系统接口:此接口为系统接口。
ANALYSIS_FACE 3 人脸检测分析类别。系统接口:此接口为系统接口。
ANALYSIS_OBJECT 4 目标检测分析类别。系统接口:此接口为系统接口。
ANALYSIS_RECOMMENDATION 5 推荐构图分析类别。系统接口:此接口为系统接口。
ANALYSIS_SEGMENTATION 6 抠图分析类别。系统接口:此接口为系统接口。
ANALYSIS_COMPOSITION 7 美学构图分析类别。系统接口:此接口为系统接口。
ANALYSIS_SALIENCY 8 最佳呈现主体中心分析类别。系统接口:此接口为系统接口。
ANALYSIS_DETAIL_ADDRESS 9 详细地址分析类别。系统接口:此接口为系统接口。