1# @ohos.file.photoAccessHelper (相册管理模块) 2 3该模块提供相册管理模块能力,包括创建相册以及访问、修改相册中的媒体数据信息等。 4 5> **说明:** 6> 7> 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 8 9## 导入模块 10 11```ts 12import { photoAccessHelper } from '@kit.MediaLibraryKit'; 13``` 14 15## photoAccessHelper.getPhotoAccessHelper 16 17getPhotoAccessHelper(context: Context): PhotoAccessHelper 18 19获取相册管理模块的实例,用于访问和修改相册中的媒体文件。 20 21**模型约束**: 此接口仅可在Stage模型下使用。 22 23**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 24 25**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 26 27**参数:** 28 29| 参数名 | 类型 | 必填 | 说明 | 30| ------- | ------- | ---- | -------------------------- | 31| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | 是 | 传入Ability实例的Context。 | 32 33**返回值:** 34 35| 类型 | 说明 | 36| ----------------------------- | :---- | 37| [PhotoAccessHelper](#photoaccesshelper) | 相册管理模块的实例。 | 38 39**错误码:** 40 41接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 42 43| 错误码ID | 错误信息 | 44| -------- | ---------------------------------------- | 45| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 46 47**示例:** 48 49```ts 50//此处获取的phAccessHelper实例为全局对象,后续使用到phAccessHelper的地方默认为使用此处获取的对象,如未添加此段代码报phAccessHelper未定义的错误请自行添加 51let context = getContext(this); 52let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context); 53``` 54 55## PhotoAccessHelper 56 57### getAssets 58 59getAssets(options: FetchOptions, callback: AsyncCallback<FetchResult<PhotoAsset>>): void 60 61获取图片和视频资源,使用callback方式返回结果。 62 63**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 64 65**需要权限**:ohos.permission.READ_IMAGEVIDEO 66 67对于未申请'ohos.permission.READ_IMAGEVIDEO'权限的应用,可以通过picker的方式调用该接口来查询指定uri对应的图片或视频资源,详情请参考[开发指南](../../media/medialibrary/photoAccessHelper-photoviewpicker.md#指定uri获取图片或视频资源)。 68 69**参数:** 70 71| 参数名 | 类型 | 必填 | 说明 | 72| -------- | ------------------------ | ---- | ------------------------- | 73| options | [FetchOptions](#fetchoptions) | 是 | 图片和视频检索选项。 | 74| callback | AsyncCallback<[FetchResult](#fetchresult)<[PhotoAsset](#photoasset)>> | 是 | callback返回图片和视频检索结果集。 | 75 76**错误码:** 77 78接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 79 80| 错误码ID | 错误信息 | 81| -------- | ---------------------------------------- | 82| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 83| 13900012 | Permission denied. | 84| 13900020 | Invalid argument. | 85| 14000011 | System inner fail. | 86 87**示例:** 88 89```ts 90import { dataSharePredicates } from '@kit.ArkData'; 91 92async function example() { 93 console.info('getAssets'); 94 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 95 let fetchOptions: photoAccessHelper.FetchOptions = { 96 fetchColumns: [], 97 predicates: predicates 98 }; 99 100 phAccessHelper.getAssets(fetchOptions, async (err, fetchResult) => { 101 if (fetchResult !== undefined) { 102 console.info('fetchResult success'); 103 let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 104 if (photoAsset !== undefined) { 105 console.info('photoAsset.displayName : ' + photoAsset.displayName); 106 } 107 } else { 108 console.error(`fetchResult fail with error: ${err.code}, ${err.message}`); 109 } 110 }); 111} 112``` 113 114### getAssets 115 116getAssets(options: FetchOptions): Promise<FetchResult<PhotoAsset>> 117 118获取图片和视频资源,使用Promise方式返回结果。 119 120**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 121 122**需要权限**:ohos.permission.READ_IMAGEVIDEO 123 124对于未申请'ohos.permission.READ_IMAGEVIDEO'权限的应用,可以通过picker的方式调用该接口来查询指定uri对应的图片或视频资源,详情请参考[开发指南](../../media/medialibrary/photoAccessHelper-photoviewpicker.md#指定uri获取图片或视频资源)。 125 126**参数:** 127 128| 参数名 | 类型 | 必填 | 说明 | 129| ------- | ------------------- | ---- | ---------------- | 130| options | [FetchOptions](#fetchoptions) | 是 | 图片和视频检索选项。 | 131 132**返回值:** 133 134| 类型 | 说明 | 135| --------------------------- | -------------- | 136| Promise<[FetchResult](#fetchresult)<[PhotoAsset](#photoasset)>> | Promise对象,返回图片和视频数据结果集。 | 137 138**错误码:** 139 140接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 141 142| 错误码ID | 错误信息 | 143| -------- | ---------------------------------------- | 144| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 145| 13900012 | Permission denied. | 146| 13900020 | Invalid argument. | 147| 14000011 | System inner fail. | 148 149**示例:** 150 151```ts 152import { dataSharePredicates } from '@kit.ArkData'; 153 154async function example() { 155 console.info('getAssets'); 156 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 157 let fetchOptions: photoAccessHelper.FetchOptions = { 158 fetchColumns: [], 159 predicates: predicates 160 }; 161 try { 162 let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions); 163 if (fetchResult !== undefined) { 164 console.info('fetchResult success'); 165 let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 166 if (photoAsset !== undefined) { 167 console.info('photoAsset.displayName :' + photoAsset.displayName); 168 } 169 } 170 } catch (err) { 171 console.error(`getAssets failed, error: ${err.code}, ${err.message}`); 172 } 173} 174``` 175 176### getBurstAssets<sup>12+</sup> 177 178getBurstAssets(burstKey: string, options: FetchOptions): Promise<FetchResult<PhotoAsset>> 179 180获取连拍照片资源,使用Promise方式返回结果。 181 182**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 183 184**需要权限**:ohos.permission.READ_IMAGEVIDEO 185 186**参数:** 187 188| 参数名 | 类型 | 必填 | 说明 | 189| ------- | ------------------- | ---- | ---------------- | 190| burstKey | string | 是 | 一组连拍照片的唯一标识:uuid(可传入[PhotoKeys](#photokeys)的BURST_KEY) | 191| options | [FetchOptions](#fetchoptions) | 是 | 连拍照片检索选项。 | 192 193**返回值:** 194 195| 类型 | 说明 | 196| --------------------------- | -------------- | 197| Promise<[FetchResult](#fetchresult)<[PhotoAsset](#photoasset)>> | Promise对象,返回连拍照片数据结果集。 | 198 199**错误码:** 200 201接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 202 203| 错误码ID | 错误信息 | 204| -------- | ---------------------------------------- | 205| 201 | Permission denied. | 206| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 207| 14000011 | Internal system error. | 208 209**示例:** 210 211```ts 212import { photoAccessHelper } form '@kit.MediaLibraryKit'; 213import { dataSharePredicates } from '@kit.ArkData'; 214 215async function example() { 216 console.info('getBurstAssets'); 217 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 218 let fetchOptions: photoAccessHelper.FetchOptions = { 219 fetchColumns: [], 220 predicates: predicates 221 }; 222 // burstKey为36位的uuid,可以根据photoAccessHelper.PhotoKeys获取。 223 let burstKey: string = "e719d696-09fa-44f8-ec3f215aa62a"; 224 try { 225 let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await 226 phAccessHelper.getBurstAssets(burstKey, fetchOptions); 227 if (fetchResult !== undefined) { 228 console.info('fetchResult success'); 229 let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 230 if (photoAsset !== undefined) { 231 console.info('photoAsset.displayName :' + photoAsset.displayName); 232 } 233 } 234 } catch (err) { 235 console.error(`getBurstAssets failed, error: ${err.code}, ${err.message}`); 236 } 237} 238``` 239 240### createAsset 241 242createAsset(photoType: PhotoType, extension: string, options: CreateOptions, callback: AsyncCallback<string>): void 243 244指定待创建的文件类型、后缀和创建选项,创建图片或视频资源,使用callback方式返回结果。 245 246此接口在未申请相册管理模块权限'ohos.permission.WRITE_IMAGEVIDEO'时,可以使用安全控件创建媒体资源,详情请参考[开发指南](../../media/medialibrary/photoAccessHelper-savebutton.md)。 247 248**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 249 250**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 251 252**需要权限**:ohos.permission.WRITE_IMAGEVIDEO 253 254**参数:** 255 256| 参数名 | 类型 | 必填 | 说明 | 257| -------- | ------------------------ | ---- | ------------------------- | 258| photoType | [PhotoType](#phototype) | 是 | 创建的文件类型,IMAGE或者VIDEO类型。 | 259| extension | string | 是 | 文件名后缀参数,例如:'jpg'。 | 260| options | [CreateOptions](#createoptions) | 是 | 创建选项,例如{title: 'testPhoto'}。 | 261| callback | AsyncCallback<string> | 是 | callback返回创建的图片和视频的uri。 | 262 263**错误码:** 264 265接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 266 267| 错误码ID | 错误信息 | 268| -------- | ---------------------------------------- | 269| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 270| 13900012 | Permission denied. | 271| 13900020 | Invalid argument. | 272| 14000011 | System inner fail. | 273 274**示例:** 275 276```ts 277async function example() { 278 console.info('createAssetDemo'); 279 let photoType: photoAccessHelper.PhotoType = photoAccessHelper.PhotoType.IMAGE; 280 let extension:string = 'jpg'; 281 let options: photoAccessHelper.CreateOptions = { 282 title: 'testPhoto' 283 } 284 phAccessHelper.createAsset(photoType, extension, options, (err, uri) => { 285 if (uri !== undefined) { 286 console.info('createAsset uri' + uri); 287 console.info('createAsset successfully'); 288 } else { 289 console.error(`createAsset failed, error: ${err.code}, ${err.message}`); 290 } 291 }); 292} 293``` 294 295### createAsset 296 297createAsset(photoType: PhotoType, extension: string, callback: AsyncCallback<string>): void 298 299指定待创建的文件类型和后缀,创建图片或视频资源,使用callback方式返回结果。 300 301此接口在未申请相册管理模块权限'ohos.permission.WRITE_IMAGEVIDEO'时,可以使用安全控件创建媒体资源,详情请参考[开发指南](../../media/medialibrary/photoAccessHelper-savebutton.md)。 302 303**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 304 305**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 306 307**需要权限**:ohos.permission.WRITE_IMAGEVIDEO 308 309**参数:** 310 311| 参数名 | 类型 | 必填 | 说明 | 312| -------- | ------------------------ | ---- | ------------------------- | 313| photoType | [PhotoType](#phototype) | 是 | 创建的文件类型,IMAGE或者VIDEO类型。 | 314| extension | string | 是 | 文件名后缀参数,例如:'jpg'。 | 315| callback | AsyncCallback<string> | 是 | callback返回创建的图片和视频的uri。 | 316 317**错误码:** 318 319接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 320 321| 错误码ID | 错误信息 | 322| -------- | ---------------------------------------- | 323| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 324| 13900012 | Permission denied. | 325| 13900020 | Invalid argument. | 326| 14000011 | System inner fail. | 327 328**示例:** 329 330```ts 331async function example() { 332 console.info('createAssetDemo'); 333 let photoType: photoAccessHelper.PhotoType = photoAccessHelper.PhotoType.IMAGE; 334 let extension: string = 'jpg'; 335 phAccessHelper.createAsset(photoType, extension, (err, uri) => { 336 if (uri !== undefined) { 337 console.info('createAsset uri' + uri); 338 console.info('createAsset successfully'); 339 } else { 340 console.error(`createAsset failed, error: ${err.code}, ${err.message}`); 341 } 342 }); 343} 344``` 345 346### createAsset 347 348createAsset(photoType: PhotoType, extension: string, options?: CreateOptions): Promise<string> 349 350指定待创建的文件类型、后缀和创建选项,创建图片或视频资源,使用Promise方式返回结果。 351 352此接口在未申请相册管理模块权限'ohos.permission.WRITE_IMAGEVIDEO'时,可以使用安全控件创建媒体资源,详情请参考[开发指南](../../media/medialibrary/photoAccessHelper-savebutton.md)。 353 354**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 355 356**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 357 358**需要权限**:ohos.permission.WRITE_IMAGEVIDEO 359 360**参数:** 361 362| 参数名 | 类型 | 必填 | 说明 | 363| -------- | ------------------------ | ---- | ------------------------- | 364| photoType | [PhotoType](#phototype) | 是 | 创建的文件类型,IMAGE或者VIDEO类型。 | 365| extension | string | 是 | 文件名后缀参数,例如:'jpg'。 | 366| options | [CreateOptions](#createoptions) | 否 | 创建选项,例如{title: 'testPhoto'}。 | 367 368**返回值:** 369 370| 类型 | 说明 | 371| --------------------------- | -------------- | 372| Promise<string> | Promise对象,返回创建的图片和视频的uri。 | 373 374**错误码:** 375 376接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 377 378| 错误码ID | 错误信息 | 379| -------- | ---------------------------------------- | 380| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 381| 13900012 | Permission denied. | 382| 13900020 | Invalid argument. | 383| 14000011 | System inner fail. | 384 385**示例:** 386 387```ts 388async function example() { 389 console.info('createAssetDemo'); 390 try { 391 let photoType: photoAccessHelper.PhotoType = photoAccessHelper.PhotoType.IMAGE; 392 let extension: string = 'jpg'; 393 let options: photoAccessHelper.CreateOptions = { 394 title: 'testPhoto' 395 } 396 let uri: string = await phAccessHelper.createAsset(photoType, extension, options); 397 console.info('createAsset uri' + uri); 398 console.info('createAsset successfully'); 399 } catch (err) { 400 console.error(`createAsset failed, error: ${err.code}, ${err.message}`); 401 } 402} 403``` 404 405### getAlbums 406 407getAlbums(type: AlbumType, subtype: AlbumSubtype, options: FetchOptions, callback: AsyncCallback<FetchResult<Album>>): void 408 409根据检索选项和相册类型获取相册,使用callback方式返回结果。 410 411获取相册前需先保证相册存在。 412 413**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 414 415**需要权限**:ohos.permission.READ_IMAGEVIDEO 416 417**参数:** 418 419| 参数名 | 类型 | 必填 | 说明 | 420| -------- | ------------------------ | ---- | ------------------------- | 421| type | [AlbumType](#albumtype) | 是 | 相册类型。 | 422| subtype | [AlbumSubtype](#albumsubtype) | 是 | 相册子类型。 | 423| options | [FetchOptions](#fetchoptions) | 是 | 检索选项。 | 424| callback | AsyncCallback<[FetchResult](#fetchresult)<[Album](#album)>> | 是 | callback返回获取相册的结果集。 | 425 426**错误码:** 427 428接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 429 430| 错误码ID | 错误信息 | 431| -------- | ---------------------------------------- | 432| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 433| 13900012 | Permission denied. | 434| 13900020 | Invalid argument. | 435| 14000011 | System inner fail. | 436 437**示例:** 438 439```ts 440import { dataSharePredicates } from '@kit.ArkData'; 441 442async function example() { 443 // 示例代码中为获取相册名为newAlbumName的相册。 444 console.info('getAlbumsDemo'); 445 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 446 predicates.equalTo('album_name', 'newAlbumName'); 447 let fetchOptions: photoAccessHelper.FetchOptions = { 448 fetchColumns: [], 449 predicates: predicates 450 }; 451 phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC, fetchOptions, async (err, fetchResult) => { 452 if (err) { 453 console.error(`getAlbumsCallback failed with err: ${err.code}, ${err.message}`); 454 return; 455 } 456 if (fetchResult === undefined) { 457 console.error('getAlbumsCallback fetchResult is undefined'); 458 return; 459 } 460 let album = await fetchResult.getFirstObject(); 461 console.info('getAlbumsCallback successfully, albumName: ' + album.albumName); 462 fetchResult.close(); 463 }); 464} 465``` 466 467### getAlbums 468 469getAlbums(type: AlbumType, subtype: AlbumSubtype, callback: AsyncCallback<FetchResult<Album>>): void 470 471根据相册类型获取相册,使用callback方式返回结果。 472 473获取相册前需先保证相册存在。 474 475**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 476 477**需要权限**:ohos.permission.READ_IMAGEVIDEO 478 479**参数:** 480 481| 参数名 | 类型 | 必填 | 说明 | 482| -------- | ------------------------ | ---- | ------------------------- | 483| type | [AlbumType](#albumtype) | 是 | 相册类型。 | 484| subtype | [AlbumSubtype](#albumsubtype) | 是 | 相册子类型。 | 485| callback | AsyncCallback<[FetchResult](#fetchresult)<[Album](#album)>> | 是 | callback返回获取相册的结果集。 | 486 487**错误码:** 488 489接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 490 491| 错误码ID | 错误信息 | 492| -------- | ---------------------------------------- | 493| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 494| 13900012 | Permission denied. | 495| 13900020 | Invalid argument. | 496| 14000011 | System inner fail. | 497 498**示例:** 499 500```ts 501async function example() { 502 // 示例代码中为获取统相册VIDEO,默认已预置。 503 console.info('getAlbumsDemo'); 504 phAccessHelper.getAlbums(photoAccessHelper.AlbumType.SYSTEM, photoAccessHelper.AlbumSubtype.VIDEO, async (err, fetchResult) => { 505 if (err) { 506 console.error(`getAlbumsCallback failed with err: ${err.code}, ${err.message}`); 507 return; 508 } 509 if (fetchResult === undefined) { 510 console.error('getAlbumsCallback fetchResult is undefined'); 511 return; 512 } 513 let album: photoAccessHelper.Album = await fetchResult.getFirstObject(); 514 console.info('getAlbumsCallback successfully, albumUri: ' + album.albumUri); 515 fetchResult.close(); 516 }); 517} 518``` 519 520### getAlbums 521 522getAlbums(type: AlbumType, subtype: AlbumSubtype, options?: FetchOptions): Promise<FetchResult<Album>> 523 524根据检索选项和相册类型获取相册,使用Promise方式返回结果。 525 526获取相册前需先保证相册存在。 527 528**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 529 530**需要权限**:ohos.permission.READ_IMAGEVIDEO 531 532**参数:** 533 534| 参数名 | 类型 | 必填 | 说明 | 535| -------- | ------------------------ | ---- | ------------------------- | 536| type | [AlbumType](#albumtype) | 是 | 相册类型。 | 537| subtype | [AlbumSubtype](#albumsubtype) | 是 | 相册子类型。 | 538| options | [FetchOptions](#fetchoptions) | 否 | 检索选项,不填时默认根据相册类型检索。 | 539 540**返回值:** 541 542| 类型 | 说明 | 543| --------------------------- | -------------- | 544| Promise<[FetchResult](#fetchresult)<[Album](#album)>> | Promise对象,返回获取相册的结果集。 | 545 546**错误码:** 547 548接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 549 550| 错误码ID | 错误信息 | 551| -------- | ---------------------------------------- | 552| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 553| 13900012 | Permission denied. | 554| 13900020 | Invalid argument. | 555| 14000011 | System inner fail. | 556 557**示例:** 558 559```ts 560import { dataSharePredicates } from '@kit.ArkData'; 561import { BusinessError } from '@kit.BasicServicesKit'; 562 563async function example() { 564 // 示例代码中为获取相册名为newAlbumName的相册。 565 console.info('getAlbumsDemo'); 566 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 567 predicates.equalTo('album_name', 'newAlbumName'); 568 let fetchOptions: photoAccessHelper.FetchOptions = { 569 fetchColumns: [], 570 predicates: predicates 571 }; 572 phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC, fetchOptions).then( async (fetchResult) => { 573 if (fetchResult === undefined) { 574 console.error('getAlbumsPromise fetchResult is undefined'); 575 return; 576 } 577 let album: photoAccessHelper.Album = await fetchResult.getFirstObject(); 578 console.info('getAlbumsPromise successfully, albumName: ' + album.albumName); 579 fetchResult.close(); 580 }).catch((err: BusinessError) => { 581 console.error(`getAlbumsPromise failed with err: ${err.code}, ${err.message}`); 582 }); 583} 584``` 585 586### registerChange 587 588registerChange(uri: string, forChildUris: boolean, callback: Callback<ChangeData>) : void 589 590注册对指定uri的监听,使用callback方式返回异步结果。 591 592**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 593 594**参数:** 595 596| 参数名 | 类型 | 必填 | 说明 | 597| --------- | ------------------------------------------- | ---- | ------------------------------------------------------------ | 598| uri | string | 是 | PhotoAsset的uri, Album的uri或[DefaultChangeUri](#defaultchangeuri)的值。 | 599| forChildUris | boolean | 是 | 是否模糊监听,uri为相册uri时,forChildUris为true能监听到相册中文件的变化,如果是false只能监听相册本身变化。uri为photoAsset时,forChildUris为true、false没有区别,uri为DefaultChangeUri时,forChildUris必须为true,如果为false将找不到该uri,收不到任何消息。 | 600| callback | Callback<[ChangeData](#changedata)> | 是 | 返回要监听的[ChangeData](#changedata)。注:uri可以注册多个不同的callback监听,[unRegisterChange](#unregisterchange)可以关闭该uri所有监听,也可以关闭指定callback的监听。 | 601 602**错误码:** 603 604接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 605 606| 错误码ID | 错误信息 | 607| -------- | ---------------------------------------- | 608| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 609| 13900012 | Permission denied. | 610| 13900020 | Invalid argument. | 611 612**示例:** 613 614```ts 615import { dataSharePredicates } from '@kit.ArkData'; 616 617async function example() { 618 console.info('registerChangeDemo'); 619 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 620 let fetchOptions: photoAccessHelper.FetchOptions = { 621 fetchColumns: [], 622 predicates: predicates 623 }; 624 let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions); 625 let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 626 if (photoAsset !== undefined) { 627 console.info('photoAsset.displayName : ' + photoAsset.displayName); 628 } 629 let onCallback1 = (changeData: photoAccessHelper.ChangeData) => { 630 console.info('onCallback1 success, changData: ' + JSON.stringify(changeData)); 631 //file had changed, do something 632 } 633 let onCallback2 = (changeData: photoAccessHelper.ChangeData) => { 634 console.info('onCallback2 success, changData: ' + JSON.stringify(changeData)); 635 //file had changed, do something 636 } 637 // 注册onCallback1监听 638 phAccessHelper.registerChange(photoAsset.uri, false, onCallback1); 639 // 注册onCallback2监听 640 phAccessHelper.registerChange(photoAsset.uri, false, onCallback2); 641 642 await photoAccessHelper.MediaAssetChangeRequest.deleteAssets(context, [photoAsset]); 643} 644``` 645 646### unRegisterChange 647 648unRegisterChange(uri: string, callback?: Callback<ChangeData>): void 649 650取消指定uri的监听,一个uri可以注册多个监听,存在多个callback监听时,可以取消指定注册的callback的监听;不指定callback时取消该uri的所有监听。 651 652**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 653 654**参数:** 655 656| 参数名 | 类型 | 必填 | 说明 | 657| -------- | ------------------------------------------- | ---- | ------------------------------------------------------------ | 658| uri | string | 是 | PhotoAsset的uri, Album的uri或[DefaultChangeUri](#defaultchangeuri)的值。 | 659| callback | Callback<[ChangeData](#changedata)> | 否 | 取消[registerChange](#registerchange)注册时的callback的监听,不填时,取消该uri的所有监听。注:off指定注册的callback后不会进入此回调。 | 660 661**错误码:** 662 663接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 664 665| 错误码ID | 错误信息 | 666| -------- | ---------------------------------------- | 667| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 668| 13900012 | Permission denied. | 669| 13900020 | Invalid argument. | 670 671**示例:** 672 673```ts 674import { dataSharePredicates } from '@kit.ArkData'; 675 676async function example() { 677 console.info('offDemo'); 678 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 679 let fetchOptions: photoAccessHelper.FetchOptions = { 680 fetchColumns: [], 681 predicates: predicates 682 }; 683 let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions); 684 let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 685 if (photoAsset !== undefined) { 686 console.info('photoAsset.displayName : ' + photoAsset.displayName); 687 } 688 let onCallback1 = (changeData: photoAccessHelper.ChangeData) => { 689 console.info('onCallback1 on'); 690 } 691 let onCallback2 = (changeData: photoAccessHelper.ChangeData) => { 692 console.info('onCallback2 on'); 693 } 694 // 注册onCallback1监听 695 phAccessHelper.registerChange(photoAsset.uri, false, onCallback1); 696 // 注册onCallback2监听 697 phAccessHelper.registerChange(photoAsset.uri, false, onCallback2); 698 // 关闭onCallback1监听,onCallback2 继续监听 699 phAccessHelper.unRegisterChange(photoAsset.uri, onCallback1); 700 await photoAccessHelper.MediaAssetChangeRequest.deleteAssets(context, [photoAsset]); 701} 702``` 703 704### createDeleteRequest<sup>(deprecated)</sup> 705 706createDeleteRequest(uriList: Array<string>, callback: AsyncCallback<void>): void 707 708创建一个弹出框来删除照片,删除的文件进入到回收站,使用callback方式返回结果。 709 710> **说明:** 711> 712> 从API version 10开始支持,从API version 11开始废弃。建议使用[MediaAssetChangeRequest.deleteAssets](#deleteassets11-1)替代。 713 714**需要权限**:ohos.permission.WRITE_IMAGEVIDEO 715 716**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 717 718**参数:** 719 720| 参数名 | 类型 | 必填 | 说明 | 721| -------- | ------------------------- | ---- | ---------- | 722| uriList | Array<string> | 是 | 待删除的媒体文件uri数组,最大删除数量300。 | 723| callback | AsyncCallback<void> | 是 | callback返回void。 | 724 725**错误码:** 726 727接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 728 729| 错误码ID | 错误信息 | 730| -------- | ---------------------------------------- | 731| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 732| 13900012 | Permission denied. | 733| 13900020 | Invalid argument. | 734| 14000011 | System inner fail. | 735 736**示例:** 737 738```ts 739import { dataSharePredicates } from '@kit.ArkData'; 740 741async function example() { 742 console.info('createDeleteRequestDemo'); 743 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 744 let fetchOptions: photoAccessHelper.FetchOptions = { 745 fetchColumns: [], 746 predicates: predicates 747 }; 748 try { 749 let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions); 750 let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 751 if (asset === undefined) { 752 console.error('asset not exist'); 753 return; 754 } 755 phAccessHelper.createDeleteRequest([asset.uri], (err) => { 756 if (err === undefined) { 757 console.info('createDeleteRequest successfully'); 758 } else { 759 console.error(`createDeleteRequest failed with error: ${err.code}, ${err.message}`); 760 } 761 }); 762 } catch (err) { 763 console.error(`fetch failed, error: ${err.code}, ${err.message}`); 764 } 765} 766``` 767 768### createDeleteRequest<sup>(deprecated)</sup> 769 770createDeleteRequest(uriList: Array<string>): Promise<void> 771 772创建一个弹出框来删除照片,删除的文件进入到回收站,使用Promise方式返回结果。 773 774> **说明:** 775> 776> 从API version 10开始支持,从API version 11开始废弃。建议使用[MediaAssetChangeRequest.deleteAssets](#deleteassets11-1)替代。 777 778**需要权限**:ohos.permission.WRITE_IMAGEVIDEO 779 780**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 781 782**参数:** 783 784| 参数名 | 类型 | 必填 | 说明 | 785| -------- | ------------------------- | ---- | ---------- | 786| uriList | Array<string> | 是 | 待删除的媒体文件uri数组,最大删除数量300。 | 787 788**返回值:** 789 790| 类型 | 说明 | 791| --------------------------------------- | ----------------- | 792| Promise<void>| Promise对象,返回void。 | 793 794**错误码:** 795 796接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 797 798| 错误码ID | 错误信息 | 799| -------- | ---------------------------------------- | 800| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 801| 13900012 | Permission denied. | 802| 13900020 | Invalid argument. | 803| 14000011 | System inner fail. | 804 805**示例:** 806 807```ts 808import { dataSharePredicates } from '@kit.ArkData'; 809 810async function example() { 811 console.info('createDeleteRequestDemo'); 812 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 813 let fetchOptions: photoAccessHelper.FetchOptions = { 814 fetchColumns: [], 815 predicates: predicates 816 }; 817 try { 818 let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions); 819 let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 820 if (asset === undefined) { 821 console.error('asset not exist'); 822 return; 823 } 824 await phAccessHelper.createDeleteRequest([asset.uri]); 825 console.info('createDeleteRequest successfully'); 826 } catch (err) { 827 console.error(`createDeleteRequest failed with error: ${err.code}, ${err.message}`); 828 } 829} 830``` 831 832### applyChanges<sup>11+</sup> 833 834applyChanges(mediaChangeRequest: MediaChangeRequest): Promise<void> 835 836提交媒体变更请求,使用Promise方式返回结果。 837 838**需要权限**:ohos.permission.WRITE_IMAGEVIDEO 839 840在提交创建资产的变更请求时,对于未申请'ohos.permission.WRITE_IMAGEVIDEO'权限的应用,可以用安全控件的方式调用该接口来创建媒体资源,详情请参考[开发指南](../../media/medialibrary/photoAccessHelper-savebutton.md)。 841 842**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 843 844**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 845 846**参数:** 847 848| 参数名 | 类型 | 必填 | 说明 | 849| -------- | ------------------------ | ---- | ------------------------- | 850| mediaChangeRequest | [MediaChangeRequest](#mediachangerequest11) | 是 | 媒体变更请求,支持资产变更请求和相册变更请求。 | 851 852**返回值:** 853 854| 类型 | 说明 | 855| --------------------------------------- | ----------------- | 856| Promise<void>| Promise对象,返回void。 | 857 858**错误码:** 859 860接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 861 862| 错误码ID | 错误信息 | 863| -------- | ---------------------------------------- | 864| 201 | Permission denied. | 865| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 866| 14000011 | System inner fail. | 867 868**示例:** 869 870该接口依赖于[MediaChangeRequest](#mediachangerequest11)对象,详细代码示例请参见[MediaAssetChangeRequest](#mediaassetchangerequest11)和[MediaAlbumChangeRequest](#mediaalbumchangerequest11)中的接口示例。 871 872### release 873 874release(callback: AsyncCallback<void>): void 875 876释放PhotoAccessHelper实例,使用callback方式返回结果。 877当后续不需要使用PhotoAccessHelper实例中的方法时调用。 878 879**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 880 881**参数:** 882 883| 参数名 | 类型 | 必填 | 说明 | 884| -------- | ------------------------- | ---- | -------------------- | 885| callback | AsyncCallback<void> | 是 | 回调表示成功还是失败。 | 886 887**错误码:** 888 889接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 890 891| 错误码ID | 错误信息 | 892| -------- | ---------------------------------------- | 893| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 894| 13900020 | Invalid argument. | 895| 14000011 | System inner fail. | 896 897**示例:** 898 899```ts 900async function example() { 901 console.info('releaseDemo'); 902 phAccessHelper.release((err) => { 903 if (err !== undefined) { 904 console.error(`release failed. error: ${err.code}, ${err.message}`); 905 } else { 906 console.info('release ok.'); 907 } 908 }); 909} 910``` 911 912### release 913 914release(): Promise<void> 915 916释放PhotoAccessHelper实例,使用Promise方式返回结果。 917当后续不需要使用PhotoAccessHelper 实例中的方法时调用。 918 919**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 920 921**返回值:** 922 923| 类型 | 说明 | 924| ------------------- | --------------------------------- | 925| Promise<void> | Promise对象,返回void。 | 926 927**错误码:** 928 929接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 930 931| 错误码ID | 错误信息 | 932| -------- | ---------------------------------------- | 933| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 934| 13900020 | Invalid argument. | 935| 14000011 | System inner fail. | 936 937**示例:** 938 939```ts 940async function example() { 941 console.info('releaseDemo'); 942 try { 943 await phAccessHelper.release(); 944 console.info('release ok.'); 945 } catch (err) { 946 console.error(`release failed. error: ${err.code}, ${err.message}`); 947 } 948} 949``` 950 951### showAssetsCreationDialog<sup>12+</sup> 952 953showAssetsCreationDialog(srcFileUris: Array<string>, photoCreationConfigs: Array<PhotoCreationConfig>): Promise<Array<string>> 954 955调用接口拉起保存确认弹窗。用户同意保存后,返回已创建并授予保存权限的uri列表,该列表永久生效,应用可使用该uri写入图片/视频。如果用户拒绝保存,将返回空列表。 956 957**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 958 959**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 960 961**参数:** 962 963| 参数名 | 类型 | 必填 | 说明 | 964| -------- |----------------------------------------------------------------------| ---- | ------------------------- | 965| srcFileUris | Array<string> | 是 | 需保存到媒体库中的图片/视频文件对应的[媒体库uri](../../file-management/user-file-uri-intro.md#媒体文件uri)。<br>**注意:**<br>- 仅支持处理图片、视频uri。<br>- 不支持手动拼接的uri,需调用接口获取,获取方式参考[媒体文件uri获取方式](../../file-management/user-file-uri-intro.md#媒体文件uri获取方式)。 | 966| photoCreationConfigs | Array<[PhotoCreationConfig](#photocreationconfig12)> | 是 | 保存图片/视频到媒体库的配置,包括保存的文件名等,与srcFileUris保持一一对应。 | 967 968**返回值:** 969 970| 类型 | 说明 | 971| --------------------------------------- | ----------------- | 972| Promise<Array<string>> | Promise对象,返回给应用的媒体库文件uri列表。Uri已对应用授权,支持应用写入数据。 | 973 974**错误码:** 975 976接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 977 978| 错误码ID | 错误信息 | 979| -------- | ---------------------------------------- | 980| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 981| 14000011 | Internal system error | 982 983**示例:** 984 985```ts 986import { dataSharePredicates } from '@kit.ArkData'; 987import { photoAccessHelper } from '@kit.MediaLibraryKit'; 988 989async function example() { 990 console.info('ShowAssetsCreationDialogDemo.'); 991 992 try { 993 // 获取需要保存到媒体库的位于应用沙箱的图片/视频uri 994 let srcFileUris: Array<string> = [ 995 'file://fileUriDemo1' // 实际场景请使用真实的uri 996 ]; 997 let photoCreationConfigs: Array<photoAccessHelper.PhotoCreationConfig> = [ 998 { 999 title: 'test2', // 可选 1000 fileNameExtension: 'jpg', 1001 photoType: photoAccessHelper.PhotoType.IMAGE, 1002 subtype: photoAccessHelper.PhotoSubtype.DEFAULT, // 可选 1003 } 1004 ]; 1005 let desFileUris: Array<string> = await phAccessHelper.showAssetsCreationDialog(srcFileUris, photoCreationConfigs); 1006 console.info('showAssetsCreationDialog success, data is ' + desFileUris); 1007 } catch (err) { 1008 console.error('showAssetsCreationDialog failed, errCode is ' + err.code + ', errMsg is ' + err.message); 1009 } 1010} 1011``` 1012 1013### createAssetWithShortTermPermission<sup>12+</sup> 1014 1015createAssetWithShortTermPermission(photoCreationConfig: PhotoCreationConfig): Promise<string> 1016 1017接口提供给应用调用,支持首次调用后拉起保存确认弹框。在用户同意保存后返回已创建并授予保存权限的uri,支持应用使用uri写入图片/视频; 1018在用户"同意"后的5min之内,同一个应用再次调用接口,支持无需弹框确认自动返回已授权的uri给应用,支持应用保存图片/视频。 1019 1020**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 1021 1022**需要权限:** ohos.permission.SHORT_TERM_WRITE_IMAGEVIDEO 1023 1024**参数:** 1025 1026| 参数名 | 类型 | 必填 | 说明 | 1027| -------- |----------------------------------------------------------------------| ---- | ------------------------- | 1028| photoCreationConfig | [PhotoCreationConfig](#photocreationconfig12); | 是 | 保存图片/视频到媒体库的配置,包括保存的文件名等。 | 1029 1030**返回值:** 1031 1032| 类型 | 说明 | 1033| --------------------------------------- | ----------------- | 1034| Promise<string> | Promise对象,返回给应用的媒体库文件uri。Uri已对应用授权,支持应用写入数据。 | 1035 1036**错误码:** 1037 1038接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 1039 1040| 错误码ID | 错误信息 | 1041| -------- | ---------------------------------------- | 1042| 201 | Permission denied | 1043| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 1044| 14000011 | Internal system error | 1045 1046**示例:** 1047 1048```ts 1049import { fileIo } from '@kit.CoreFileKit'; 1050 1051async function example() { 1052 console.info('createAssetWithShortTermPermissionDemo.'); 1053 1054 try { 1055 let photoCreationConfig: photoAccessHelper.PhotoCreationConfig = { 1056 title: '123456', 1057 fileNameExtension: 'jpg', 1058 photoType: photoAccessHelper.PhotoType.IMAGE, 1059 subtype: photoAccessHelper.PhotoSubtype.DEFAULT, 1060 }; 1061 1062 let resultUri: string = await phAccessHelper.createAssetWithShortTermPermission(photoCreationConfig); 1063 let resultFile: fileIo.File = fileIo.openSync(resultUri, fileIo.OpenMode.READ_WRITE); 1064 // 实际场景请使用真实的uri和文件大小 1065 let srcFile: fileIo.File = fileIo.openSync("file://test.jpg", fileIo.OpenMode.READ_ONLY); 1066 let bufSize: number = 2000000; 1067 let readSize: number = 0; 1068 let buf = new ArrayBuffer(bufSize); 1069 let readLen = fileIo.readSync(srcFile.fd, buf, { 1070 offset: readSize, 1071 length: bufSize 1072 }); 1073 if (readLen > 0) { 1074 readSize += readLen; 1075 fileIo.writeSync(resultFile.fd, buf, { length: readLen }); 1076 } 1077 fileIo.closeSync(srcFile); 1078 fileIo.closeSync(resultFile); 1079 } catch (err) { 1080 console.error('createAssetWithShortTermPermission failed, errCode is ' + err.code + ', errMsg is ' + err.message); 1081 } 1082 1083} 1084``` 1085 1086### requestPhotoUrisReadPermission<sup>14+</sup> 1087 1088requestPhotoUrisReadPermission(srcFileUris: Array<string>): Promise<Array<string>> 1089 1090<!--RP1--><!--RP1End-->调用接口给未授权的uri进行授权,返回已创建并授予保存权限的uri列表。 1091 1092**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。 1093 1094**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 1095 1096**参数:** 1097 1098| 参数名 | 类型 | 必填 | 说明 | 1099| -------- |----------------------------------------------------------------------| ---- | ------------------------- | 1100| srcFileUris | Array<string> | 是 | 需进行授权的图片/视频文件对应的[媒体库uri](../../file-management/user-file-uri-intro.md#媒体文件uri)。<br>**注意:** 仅支持处理图片、视频uri。| 1101 1102**返回值:** 1103 1104| 类型 | 说明 | 1105| --------------------------------------- | ----------------- | 1106| Promise<Array<string>> | Promise对象,返回已授权的uri列表。 | 1107 1108**错误码:** 1109 1110接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 1111 1112| 错误码ID | 错误信息 | 1113| -------- | ---------------------------------------- | 1114| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 1115| 14000011 | Internal system error | 1116 1117**示例:** 1118 1119```ts 1120import { dataSharePredicates } from '@kit.ArkData'; 1121import { photoAccessHelper } from '@kit.MediaLibraryKit'; 1122 1123async function example() { 1124 console.info('requestPhotoUrisReadPermissionDemo.'); 1125 1126 try { 1127 let phAccessHelper: photoAccessHelper.PhotoAccessHelper = photoAccessHelper.getPhotoAccessHelper(context); 1128 // 获取需要进行授权的图片/视频uri 1129 let srcFileUris: Array<string> = [ 1130 'file://fileUriDemo1' // 实际场景请使用真实的uri 1131 ]; 1132 let desFileUris: Array<string> = await phAccessHelper.requestPhotoUrisReadPermission(srcFileUris); 1133 console.info('requestPhotoUrisReadPermission success, data is ' + desFileUris); 1134 } catch (err) { 1135 console.error('requestPhotoUrisReadPermission failed, errCode is ' + err.code + ', errMsg is ' + err.message); 1136 } 1137} 1138``` 1139 1140## PhotoAsset 1141 1142提供封装文件属性的方法。 1143 1144### 属性 1145 1146**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 1147 1148| 名称 | 类型 | 可读 | 可写 | 说明 | 1149| ------------------------- | ------------------------ | ---- | ---- | ------------------------------------------------------ | 1150| uri | string | 是 | 否 | 媒体文件资源uri(如:file://media/Photo/1/IMG_datetime_0001/displayName.jpg),详情参见用户文件uri介绍中的[媒体文件uri](../../file-management/user-file-uri-intro.md#媒体文件uri)<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 1151| photoType | [PhotoType](#phototype) | 是 | 否 | 媒体文件类型 | 1152| displayName | string | 是 | 否 | 显示文件名,包含后缀名。 | 1153 1154### get 1155 1156get(member: string): MemberType 1157 1158获取PhotoAsset成员参数。 1159 1160**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 1161 1162**参数:** 1163 1164| 参数名 | 类型 | 必填 | 说明 | 1165| -------- | ------------------------- | ---- | ----- | 1166| member | string | 是 | 成员参数名称,在get时,除了'uri'、'media_type'、'subtype'和'display_name'四个属性之外,其他的属性都需要在fetchColumns中填入需要get的[PhotoKeys](#photokeys),例如:get title属性fetchColumns: ['title']。 | 1167 1168**返回值:** 1169 1170| 类型 | 说明 | 1171| ------------------- | --------------------------------- | 1172| [MemberType](#membertype) | 获取PhotoAsset成员参数的值。 | 1173 1174**错误码:** 1175 1176接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 1177 1178| 错误码ID | 错误信息 | 1179| -------- | ---------------------------------------- | 1180| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 1181| 13900020 | Invalid argument. | 1182| 14000014 | Member is not a valid PhotoKey. | 1183 1184**示例:** 1185 1186```ts 1187import { dataSharePredicates } from '@kit.ArkData'; 1188 1189async function example() { 1190 console.info('photoAssetGetDemo'); 1191 try { 1192 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 1193 let fetchOption: photoAccessHelper.FetchOptions = { 1194 fetchColumns: ['title'], 1195 predicates: predicates 1196 }; 1197 let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 1198 let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 1199 let title: photoAccessHelper.PhotoKeys = photoAccessHelper.PhotoKeys.TITLE; 1200 let photoAssetTitle: photoAccessHelper.MemberType = photoAsset.get(title.toString()); 1201 console.info('photoAsset Get photoAssetTitle = ', photoAssetTitle); 1202 } catch (err) { 1203 console.error(`release failed. error: ${err.code}, ${err.message}`); 1204 } 1205} 1206``` 1207 1208### set 1209 1210set(member: string, value: string): void 1211 1212设置PhotoAsset成员参数。 1213 1214**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 1215 1216**参数:** 1217 1218| 参数名 | 类型 | 必填 | 说明 | 1219| -------- | ------------------------- | ---- | ----- | 1220| member | string | 是 | 成员参数名称例如:[PhotoKeys](#photokeys).TITLE。 | 1221| value | string | 是 | 设置成员参数名称,只能修改[PhotoKeys](#photokeys).TITLE的值。 | 1222 1223**错误码:** 1224 1225接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 1226 1227| 错误码ID | 错误信息 | 1228| -------- | ---------------------------------------- | 1229| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 1230| 13900020 | Invalid argument. | 1231| 14000014 | Member is not a valid PhotoKey. | 1232 1233**示例:** 1234 1235```ts 1236import { dataSharePredicates } from '@kit.ArkData'; 1237 1238async function example() { 1239 console.info('photoAssetSetDemo'); 1240 try { 1241 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 1242 let fetchOption: photoAccessHelper.FetchOptions = { 1243 fetchColumns: ['title'], 1244 predicates: predicates 1245 }; 1246 let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 1247 let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 1248 let title: string = photoAccessHelper.PhotoKeys.TITLE.toString(); 1249 photoAsset.set(title, 'newTitle'); 1250 } catch (err) { 1251 console.error(`release failed. error: ${err.code}, ${err.message}`); 1252 } 1253} 1254``` 1255 1256### commitModify 1257 1258commitModify(callback: AsyncCallback<void>): void 1259 1260修改文件的元数据,使用callback方式返回异步结果。 1261 1262**需要权限**:ohos.permission.WRITE_IMAGEVIDEO 1263 1264**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1265 1266**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 1267 1268**参数:** 1269 1270| 参数名 | 类型 | 必填 | 说明 | 1271| -------- | ------------------------- | ---- | ----- | 1272| callback | AsyncCallback<void> | 是 | callback返回void。 | 1273 1274**错误码:** 1275 1276接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 1277 1278| 错误码ID | 错误信息 | 1279| -------- | ---------------------------------------- | 1280| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 1281| 13900012 | Permission denied. | 1282| 13900020 | Invalid argument. | 1283| 14000001 | Invalid display name. | 1284| 14000011 | System inner fail. | 1285 1286**示例:** 1287 1288```ts 1289import { dataSharePredicates } from '@kit.ArkData'; 1290 1291async function example() { 1292 console.info('commitModifyDemo'); 1293 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 1294 let fetchOption: photoAccessHelper.FetchOptions = { 1295 fetchColumns: ['title'], 1296 predicates: predicates 1297 }; 1298 let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 1299 let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 1300 let title: string = photoAccessHelper.PhotoKeys.TITLE.toString(); 1301 let photoAssetTitle: photoAccessHelper.MemberType = photoAsset.get(title); 1302 console.info('photoAsset get photoAssetTitle = ', photoAssetTitle); 1303 photoAsset.set(title, 'newTitle2'); 1304 photoAsset.commitModify((err) => { 1305 if (err === undefined) { 1306 let newPhotoAssetTitle: photoAccessHelper.MemberType = photoAsset.get(title); 1307 console.info('photoAsset get newPhotoAssetTitle = ', newPhotoAssetTitle); 1308 } else { 1309 console.error(`commitModify failed, error: ${err.code}, ${err.message}`); 1310 } 1311 }); 1312} 1313``` 1314 1315### commitModify 1316 1317commitModify(): Promise<void> 1318 1319修改文件的元数据,使用promise方式返回异步结果。 1320 1321**需要权限**:ohos.permission.WRITE_IMAGEVIDEO 1322 1323**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1324 1325**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 1326 1327**返回值:** 1328 1329| 类型 | 说明 | 1330| ------------------- | ---------- | 1331| Promise<void> | Promise对象,返回void。 | 1332 1333**错误码:** 1334 1335接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 1336 1337| 错误码ID | 错误信息 | 1338| -------- | ---------------------------------------- | 1339| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 1340| 13900012 | Permission denied. | 1341| 13900020 | Invalid argument. | 1342| 14000001 | Invalid display name. | 1343| 14000011 | System inner fail. | 1344 1345**示例:** 1346 1347```ts 1348import { dataSharePredicates } from '@kit.ArkData'; 1349 1350async function example() { 1351 console.info('commitModifyDemo'); 1352 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 1353 let fetchOption: photoAccessHelper.FetchOptions = { 1354 fetchColumns: ['title'], 1355 predicates: predicates 1356 }; 1357 let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 1358 let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 1359 let title: string = photoAccessHelper.PhotoKeys.TITLE.toString(); 1360 let photoAssetTitle: photoAccessHelper.MemberType = photoAsset.get(title); 1361 console.info('photoAsset get photoAssetTitle = ', photoAssetTitle); 1362 photoAsset.set(title, 'newTitle3'); 1363 try { 1364 await photoAsset.commitModify(); 1365 let newPhotoAssetTitle: photoAccessHelper.MemberType = photoAsset.get(title); 1366 console.info('photoAsset get newPhotoAssetTitle = ', newPhotoAssetTitle); 1367 } catch (err) { 1368 console.error(`release failed. error: ${err.code}, ${err.message}`); 1369 } 1370} 1371``` 1372 1373### getReadOnlyFd<sup>(deprecated)</sup> 1374 1375getReadOnlyFd(callback: AsyncCallback<number>): void 1376 1377以只读方式打开当前文件,使用callback方式返回异步结果。 1378 1379> **说明:** 1380> 1381> 从API version 10开始支持,从API version 11开始废弃。出于安全考量,不再提供获取正式媒体文件句柄的接口。 1382 1383**注意**:返回的文件描述符在使用完毕后需要调用close进行释放。 1384 1385**需要权限**:ohos.permission.READ_IMAGEVIDEO 1386 1387**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 1388 1389**参数:** 1390 1391| 参数名 | 类型 | 必填 | 说明 | 1392| -------- | --------------------------- | ---- | ----------------------------------- | 1393| callback | AsyncCallback<number> | 是 | callback返回文件描述符。 | 1394 1395**错误码:** 1396 1397接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 1398 1399| 错误码ID | 错误信息 | 1400| -------- | ---------------------------------------- | 1401| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 1402| 13900012 | Permission denied. | 1403| 13900020 | Invalid argument. | 1404| 14000011 | System inner fail. | 1405 1406**示例:** 1407 1408```ts 1409async function example() { 1410 console.info('getReadOnlyFdDemo'); 1411 // 需要保证设备中存在可读取图片视频文件 1412 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 1413 let fetchOptions: photoAccessHelper.FetchOptions = { 1414 fetchColumns: [], 1415 predicates: predicates 1416 }; 1417 let assetResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions); 1418 let photoAsset: photoAccessHelper.PhotoAsset = await assetResult.getFirstObject(); 1419 photoAsset.getReadOnlyFd((err, fd) => { 1420 if (fd !== undefined) { 1421 console.info('File fd' + fd); 1422 photoAsset.close(fd); 1423 } else { 1424 console.error(`getReadOnlyFd err: ${err.code}, ${err.message}`); 1425 } 1426 }); 1427} 1428``` 1429 1430### getReadOnlyFd<sup>(deprecated)</sup> 1431 1432getReadOnlyFd(): Promise<number> 1433 1434以只读方式打开当前文件,使用promise方式返回异步结果。 1435 1436> **说明:** 1437> 1438> 从API version 10开始支持,从API version 11开始废弃。出于安全考量,不再提供获取正式媒体文件句柄的接口。 1439 1440**注意**:返回的文件描述符在使用完毕后需要调用close进行释放。 1441 1442**需要权限**:ohos.permission.READ_IMAGEVIDEO 1443 1444**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 1445 1446**返回值:** 1447 1448| 类型 | 说明 | 1449| --------------------- | ------------- | 1450| Promise<number> | Promise对象,返回文件描述符。 | 1451 1452**错误码:** 1453 1454接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 1455 1456| 错误码ID | 错误信息 | 1457| -------- | ---------------------------------------- | 1458| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 1459| 13900012 | Permission denied. | 1460| 13900020 | Invalid argument. | 1461| 14000011 | System inner fail. | 1462 1463**示例:** 1464 1465```ts 1466async function example() { 1467 console.info('getReadOnlyFdDemo'); 1468 try { 1469 // 需要保证设备中存在可读取图片视频文件 1470 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 1471 let fetchOptions: photoAccessHelper.FetchOptions = { 1472 fetchColumns: [], 1473 predicates: predicates 1474 }; 1475 let assetResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions); 1476 let photoAsset: photoAccessHelper.PhotoAsset = await assetResult.getFirstObject(); 1477 let fd: number = await photoAsset.getReadOnlyFd(); 1478 if (fd !== undefined) { 1479 console.info('File fd' + fd); 1480 photoAsset.close(fd); 1481 } else { 1482 console.error('getReadOnlyFd fail'); 1483 } 1484 } catch (err) { 1485 console.error(`getReadOnlyFd demo err: ${err.code}, ${err.message}`); 1486 } 1487} 1488``` 1489 1490### close<sup>(deprecated)</sup> 1491 1492close(fd: number, callback: AsyncCallback<void>): void 1493 1494关闭当前文件,使用callback方式返回异步结果。 1495 1496> **说明:** 1497> 1498> 从API version 10开始支持,从API version 11开始废弃。出于安全考量,不再提供获取正式媒体文件句柄的接口。对应的close接口一并废弃。 1499 1500**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 1501 1502**参数:** 1503 1504| 参数名 | 类型 | 必填 | 说明 | 1505| -------- | ------------------------- | ---- | ----- | 1506| fd | number | 是 | 文件描述符。 | 1507| callback | AsyncCallback<void> | 是 | callback返回void。 | 1508 1509**错误码:** 1510 1511接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 1512 1513| 错误码ID | 错误信息 | 1514| -------- | ---------------------------------------- | 1515| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 1516| 13900020 | Invalid argument. | 1517| 14000011 | System inner fail. | 1518 1519**示例:** 1520 1521```ts 1522import { dataSharePredicates } from '@kit.ArkData'; 1523 1524async function example() { 1525 console.info('closeDemo'); 1526 try { 1527 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 1528 let fetchOption: photoAccessHelper.FetchOptions = { 1529 fetchColumns: [], 1530 predicates: predicates 1531 }; 1532 let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 1533 let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 1534 let fd: number = await photoAsset.open('rw'); 1535 console.info('file fd', fd); 1536 photoAsset.close(fd, (err) => { 1537 if (err === undefined) { 1538 console.info('asset close succeed.'); 1539 } else { 1540 console.error(`close failed, error: ${err.code}, ${err.message}`); 1541 } 1542 }); 1543 } catch (err) { 1544 console.error(`close failed, error: ${err.code}, ${err.message}`); 1545 } 1546} 1547``` 1548 1549### close<sup>(deprecated)</sup> 1550 1551close(fd: number): Promise<void> 1552 1553关闭当前文件,使用promise方式返回异步结果。 1554 1555> **说明:** 1556> 1557> 从API version 10开始支持,从API version 11开始废弃。出于安全考量,不再提供获取正式媒体文件句柄的接口。对应的close接口一并废弃。 1558 1559**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 1560 1561**参数:** 1562 1563| 参数名 | 类型 | 必填 | 说明 | 1564| ---- | ------ | ---- | ----- | 1565| fd | number | 是 | 文件描述符。 | 1566 1567**返回值:** 1568 1569| 类型 | 说明 | 1570| ------------------- | ---------- | 1571| Promise<void> | Promise对象,返回void。 | 1572 1573**错误码:** 1574 1575接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 1576 1577| 错误码ID | 错误信息 | 1578| -------- | ---------------------------------------- | 1579| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 1580| 13900020 | Invalid argument. | 1581| 14000011 | System inner fail. | 1582 1583**示例:** 1584 1585```ts 1586import { dataSharePredicates } from '@kit.ArkData'; 1587 1588async function example() { 1589 console.info('closeDemo'); 1590 try { 1591 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 1592 let fetchOption: photoAccessHelper.FetchOptions = { 1593 fetchColumns: [], 1594 predicates: predicates 1595 }; 1596 let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 1597 let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 1598 let fd = await asset.open('rw'); 1599 console.info('file fd', fd); 1600 await asset.close(fd); 1601 console.info('asset close succeed.'); 1602 } catch (err) { 1603 console.error(`close failed, error: ${err.code}, ${err.message}`); 1604 } 1605} 1606``` 1607 1608### getThumbnail 1609 1610getThumbnail(callback: AsyncCallback<image.PixelMap>): void 1611 1612获取文件的缩略图,使用callback方式返回异步结果。 1613 1614**需要权限**:ohos.permission.READ_IMAGEVIDEO 1615 1616**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 1617 1618**参数:** 1619 1620| 参数名 | 类型 | 必填 | 说明 | 1621| -------- | ----------------------------------- | ---- | ---------------- | 1622| callback | AsyncCallback<[image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7)> | 是 | callback返回缩略图的PixelMap。 | 1623 1624**错误码:** 1625 1626接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 1627 1628| 错误码ID | 错误信息 | 1629| -------- | ---------------------------------------- | 1630| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 1631| 13900012 | Permission denied. | 1632| 13900020 | Invalid argument. | 1633| 14000011 | System inner fail. | 1634 1635**示例:** 1636 1637```ts 1638import { dataSharePredicates } from '@kit.ArkData'; 1639 1640async function example() { 1641 console.info('getThumbnailDemo'); 1642 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 1643 let fetchOption: photoAccessHelper.FetchOptions = { 1644 fetchColumns: [], 1645 predicates: predicates 1646 }; 1647 let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 1648 let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 1649 console.info('asset displayName = ', asset.displayName); 1650 asset.getThumbnail((err, pixelMap) => { 1651 if (err === undefined) { 1652 console.info('getThumbnail successful ' + pixelMap); 1653 } else { 1654 console.error(`getThumbnail fail with error: ${err.code}, ${err.message}`); 1655 } 1656 }); 1657} 1658``` 1659 1660### getThumbnail 1661 1662getThumbnail(size: image.Size, callback: AsyncCallback<image.PixelMap>): void 1663 1664获取文件的缩略图,传入缩略图尺寸,使用callback方式返回异步结果。 1665 1666**需要权限**:ohos.permission.READ_IMAGEVIDEO 1667 1668**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 1669 1670**参数:** 1671 1672| 参数名 | 类型 | 必填 | 说明 | 1673| -------- | ----------------------------------- | ---- | ---------------- | 1674| size | [image.Size](../apis-image-kit/js-apis-image.md#size) | 是 | 缩略图尺寸。 | 1675| callback | AsyncCallback<[image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7)> | 是 | callback返回缩略图的PixelMap。 | 1676 1677**错误码:** 1678 1679接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 1680 1681| 错误码ID | 错误信息 | 1682| -------- | ---------------------------------------- | 1683| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 1684| 13900012 | Permission denied. | 1685| 13900020 | Invalid argument. | 1686| 14000011 | System inner fail. | 1687 1688**示例:** 1689 1690```ts 1691import { dataSharePredicates } from '@kit.ArkData'; 1692import { image } from '@kit.ImageKit'; 1693 1694async function example() { 1695 console.info('getThumbnailDemo'); 1696 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 1697 let fetchOption: photoAccessHelper.FetchOptions = { 1698 fetchColumns: [], 1699 predicates: predicates 1700 }; 1701 let size: image.Size = { width: 720, height: 720 }; 1702 let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 1703 let asset = await fetchResult.getFirstObject(); 1704 console.info('asset displayName = ', asset.displayName); 1705 asset.getThumbnail(size, (err, pixelMap) => { 1706 if (err === undefined) { 1707 console.info('getThumbnail successful ' + pixelMap); 1708 } else { 1709 console.error(`getThumbnail fail with error: ${err.code}, ${err.message}`); 1710 } 1711 }); 1712} 1713``` 1714 1715### getThumbnail 1716 1717getThumbnail(size?: image.Size): Promise<image.PixelMap> 1718 1719获取文件的缩略图,传入缩略图尺寸,使用promise方式返回异步结果。 1720 1721**需要权限**:ohos.permission.READ_IMAGEVIDEO 1722 1723**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 1724 1725**参数:** 1726 1727| 参数名 | 类型 | 必填 | 说明 | 1728| ---- | -------------- | ---- | ----- | 1729| size | [image.Size](../apis-image-kit/js-apis-image.md#size) | 否 | 缩略图尺寸。 | 1730 1731**返回值:** 1732 1733| 类型 | 说明 | 1734| ----------------------------- | --------------------- | 1735| Promise<[image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7)> | Promise对象,返回缩略图的PixelMap。 | 1736 1737**错误码:** 1738 1739接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 1740 1741| 错误码ID | 错误信息 | 1742| -------- | ---------------------------------------- | 1743| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 1744| 13900012 | Permission denied. | 1745| 13900020 | Invalid argument. | 1746| 14000011 | System inner fail. | 1747 1748**示例:** 1749 1750```ts 1751import { dataSharePredicates } from '@kit.ArkData'; 1752import { image } from '@kit.ImageKit'; 1753import { BusinessError } from '@kit.BasicServicesKit'; 1754 1755async function example() { 1756 console.info('getThumbnailDemo'); 1757 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 1758 let fetchOption: photoAccessHelper.FetchOptions = { 1759 fetchColumns: [], 1760 predicates: predicates 1761 }; 1762 let size: image.Size = { width: 720, height: 720 }; 1763 let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 1764 let asset = await fetchResult.getFirstObject(); 1765 console.info('asset displayName = ', asset.displayName); 1766 asset.getThumbnail(size).then((pixelMap) => { 1767 console.info('getThumbnail successful ' + pixelMap); 1768 }).catch((err: BusinessError) => { 1769 console.error(`getThumbnail fail with error: ${err.code}, ${err.message}`); 1770 }); 1771} 1772``` 1773 1774### clone<sup>14+</sup> 1775 1776clone(title: string): Promise<PhotoAsset> 1777 1778将一个资产进行克隆,支持设置文件名,不支持修改文件类型。 1779 1780**需要权限**:ohos.permission.WRITE\_IMAGEVIDEO 1781 1782**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 1783 1784**参数:** 1785 1786| 参数名 | 类型 | 必填 | 说明 | 1787| ---------- | ------- | ---- | ---------------------------------- | 1788| title| string | 是 | 克隆后资产的标题。参数规格为:<br>- 不应包含扩展名。<br>- 文件名字符串长度为1~255(资产文件名为标题+扩展名)。<br>- 不允许出现非法字符,包括:. \ / : * ? " ' ` < > \| { } [ ] | 1789 1790**返回值:** 1791 1792| 类型 | 说明 | 1793| ------------------- | ----------------------- | 1794| Promise<PhotoAsset> | Promise对象,返回[PhotoAsset](#photoasset)。 | 1795 1796**错误码:** 1797 1798接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 1799 1800| 错误码ID | 错误信息 | 1801| :------- | :-------------------------------- | 1802| 201 | Permission denied. | 1803| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 1804| 14000011 | Internal system error. It is recommended to retry and check the logs.Possible causes: 1. Database corrupted; 2. The file system is abnormal; 3. The IPC request timed out. | 1805 1806**示例:** 1807 1808```ts 1809import { dataSharePredicates } from '@kit.ArkData'; 1810import { systemDateTime } from '@kit.BasicServicesKit'; 1811 1812async function example() { 1813 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 1814 let fetchOptions: photoAccessHelper.FetchOptions = { 1815 fetchColumns: [], 1816 predicates: predicates 1817 }; 1818 try { 1819 let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions); 1820 let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 1821 let title: string = systemDateTime.getTime().toString(); 1822 let newAsset: photoAccessHelper.PhotoAsset = await photoAsset.clone(title); 1823 console.info('get new asset successfully'); 1824 } catch (error) { 1825 console.error(`failed to get new asset. message = ${error.code}, ${error.message}`); 1826 } 1827} 1828``` 1829 1830## PhotoViewPicker 1831 1832图库选择器对象,用来支撑选择图片/视频等用户场景。在使用前,需要先创建PhotoViewPicker实例。 1833 1834**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1835 1836**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 1837 1838**示例:** 1839 1840```ts 1841let photoPicker = new photoAccessHelper.PhotoViewPicker(); 1842``` 1843 1844### select 1845 1846select(option?: PhotoSelectOptions) : Promise<PhotoSelectResult> 1847 1848通过选择模式拉起photoPicker界面,用户可以选择一个或多个图片/视频。接口采用promise异步返回形式,传入可选参数PhotoSelectOptions对象,返回PhotoSelectResult对象。 1849 1850**注意**:此接口返回的PhotoSelectResult对象中的photoUris只能通过临时授权的方式调用[photoAccessHelper.getAssets接口](#getassets)去使用,具体使用方式参见用户文件uri介绍中的[媒体文件uri的使用方式](../../file-management/user-file-uri-intro.md#媒体文件uri的使用方式)。 1851 1852**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1853 1854**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 1855 1856**参数:** 1857 1858| 参数名 | 类型 | 必填 | 说明 | 1859| ------- | ------- | ---- | -------------------------- | 1860| option | [PhotoSelectOptions](#photoselectoptions) | 否 | photoPicker选择选项,若无此参数,则默认选择媒体文件类型为图片和视频类型,默认选择媒体文件数量的最大值为50 | 1861 1862**返回值:** 1863 1864| 类型 | 说明 | 1865| ----------------------------- | :---- | 1866| Promise<[PhotoSelectResult](#photoselectresult)> | Promise对象。返回photoPicker选择后的结果集 | 1867 1868**错误码:** 1869 1870接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 1871 1872| 错误码ID | 错误信息 | 1873| -------- | ---------------------------------------- | 1874| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 1875| 13900042 | Unknown error. | 1876 1877**示例:** 1878 1879```ts 1880import { BusinessError } from '@kit.BasicServicesKit'; 1881async function example01() { 1882 try { 1883 let PhotoSelectOptions = new photoAccessHelper.PhotoSelectOptions(); 1884 PhotoSelectOptions.MIMEType = photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE; 1885 PhotoSelectOptions.maxSelectNumber = 5; 1886 let photoPicker = new photoAccessHelper.PhotoViewPicker(); 1887 photoPicker.select(PhotoSelectOptions).then((PhotoSelectResult: photoAccessHelper.PhotoSelectResult) => { 1888 console.info('PhotoViewPicker.select successfully, PhotoSelectResult uri: ' + JSON.stringify(PhotoSelectResult)); 1889 }).catch((err: BusinessError) => { 1890 console.error(`PhotoViewPicker.select failed with err: ${err.code}, ${err.message}`); 1891 }); 1892 } catch (error) { 1893 let err: BusinessError = error as BusinessError; 1894 console.error(`PhotoViewPicker failed with err: ${err.code}, ${err.message}`); 1895 } 1896} 1897``` 1898 1899### select 1900 1901select(option: PhotoSelectOptions, callback: AsyncCallback<PhotoSelectResult>) : void 1902 1903通过选择模式拉起photoPicker界面,用户可以选择一个或多个图片/视频。接口采用callback异步返回形式,传入参数PhotoSelectOptions对象,返回PhotoSelectResult对象。 1904 1905**注意**:此接口返回的PhotoSelectResult对象中的photoUris只能通过临时授权的方式调用[photoAccessHelper.getAssets接口](#getassets)去使用,具体使用方式参见用户文件uri介绍中的[媒体文件uri的使用方式](../../file-management/user-file-uri-intro.md#媒体文件uri的使用方式)。 1906 1907**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1908 1909**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 1910 1911**参数:** 1912 1913| 参数名 | 类型 | 必填 | 说明 | 1914| ------- | ------- | ---- | -------------------------- | 1915| option | [PhotoSelectOptions](#photoselectoptions) | 是 | photoPicker选择选项 | 1916| callback | AsyncCallback<[PhotoSelectResult](#photoselectresult)> | 是 | callback 返回photoPicker选择后的结果集 | 1917 1918**错误码:** 1919 1920接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 1921 1922| 错误码ID | 错误信息 | 1923| -------- | ---------------------------------------- | 1924| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 1925| 13900042 | Unknown error. | 1926 1927**示例:** 1928 1929```ts 1930import { BusinessError } from '@kit.BasicServicesKit'; 1931async function example02() { 1932 try { 1933 let PhotoSelectOptions = new photoAccessHelper.PhotoSelectOptions(); 1934 PhotoSelectOptions.MIMEType = photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE; 1935 PhotoSelectOptions.maxSelectNumber = 5; 1936 let photoPicker = new photoAccessHelper.PhotoViewPicker(); 1937 photoPicker.select(PhotoSelectOptions, (err: BusinessError, PhotoSelectResult: photoAccessHelper.PhotoSelectResult) => { 1938 if (err) { 1939 console.error(`PhotoViewPicker.select failed with err: ${err.code}, ${err.message}`); 1940 return; 1941 } 1942 console.info('PhotoViewPicker.select successfully, PhotoSelectResult uri: ' + JSON.stringify(PhotoSelectResult)); 1943 }); 1944 } catch (error) { 1945 let err: BusinessError = error as BusinessError; 1946 console.error(`PhotoViewPicker failed with err: ${err.code}, ${err.message}`); 1947 } 1948} 1949``` 1950 1951### select 1952 1953select(callback: AsyncCallback<PhotoSelectResult>) : void 1954 1955通过选择模式拉起photoPicker界面,用户可以选择一个或多个图片/视频。接口采用callback异步返回形式,返回PhotoSelectResult对象。 1956 1957**注意**:此接口返回的PhotoSelectResult对象中的photoUris只能通过临时授权的方式调用[photoAccessHelper.getAssets接口](#getassets)去使用,具体使用方式参见用户文件uri介绍中的[媒体文件uri的使用方式](../../file-management/user-file-uri-intro.md#媒体文件uri的使用方式)。 1958 1959**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1960 1961**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 1962 1963**参数:** 1964 1965| 参数名 | 类型 | 必填 | 说明 | 1966| ------- | ------- | ---- | -------------------------- | 1967| callback | AsyncCallback<[PhotoSelectResult](#photoselectresult)> | 是 | callback 返回photoPicker选择后的结果集 | 1968 1969**错误码:** 1970 1971接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 1972 1973| 错误码ID | 错误信息 | 1974| -------- | ---------------------------------------- | 1975| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 1976| 13900042 | Unknown error. | 1977 1978**示例:** 1979 1980```ts 1981import { BusinessError } from '@kit.BasicServicesKit'; 1982async function example03() { 1983 try { 1984 let photoPicker = new photoAccessHelper.PhotoViewPicker(); 1985 photoPicker.select((err: BusinessError, PhotoSelectResult: photoAccessHelper.PhotoSelectResult) => { 1986 if (err) { 1987 console.error(`PhotoViewPicker.select failed with err: ${err.code}, ${err.message}`); 1988 return; 1989 } 1990 console.info('PhotoViewPicker.select successfully, PhotoSelectResult uri: ' + JSON.stringify(PhotoSelectResult)); 1991 }); 1992 } catch (error) { 1993 let err: BusinessError = error as BusinessError; 1994 console.error(`PhotoViewPicker failed with err: ${err.code}, ${err.message}`); 1995 } 1996} 1997``` 1998 1999## FetchResult 2000 2001文件检索结果集。 2002 2003### getCount 2004 2005getCount(): number 2006 2007获取文件检索结果中的文件总数。 2008 2009**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 2010 2011**返回值:** 2012 2013| 类型 | 说明 | 2014| ------ | -------- | 2015| number | 检索到的文件总数。 | 2016 2017**错误码:** 2018 2019接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 2020 2021| 错误码ID | 错误信息 | 2022| -------- | ---------------------------------------- | 2023| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 2024| 13900020 | Invalid argument. | 2025| 14000011 | System inner fail. | 2026 2027**示例:** 2028 2029```ts 2030import { dataSharePredicates } from '@kit.ArkData'; 2031 2032async function example() { 2033 console.info('getCountDemo'); 2034 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 2035 let fetchOption: photoAccessHelper.FetchOptions = { 2036 fetchColumns: [], 2037 predicates: predicates 2038 }; 2039 let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 2040 let fetchCount = fetchResult.getCount(); 2041 console.info('fetchCount = ', fetchCount); 2042} 2043``` 2044 2045### isAfterLast 2046 2047isAfterLast(): boolean 2048 2049检查结果集是否指向最后一行。 2050 2051**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 2052 2053**返回值:** 2054 2055| 类型 | 说明 | 2056| ------- | ---------------------------------- | 2057| boolean | 当读到最后一条记录后,后续没有记录返回true,否则返回false。 | 2058 2059**错误码:** 2060 2061接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 2062 2063| 错误码ID | 错误信息 | 2064| -------- | ---------------------------------------- | 2065| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 2066| 13900020 | Invalid argument. | 2067| 14000011 | System inner fail. | 2068 2069**示例:** 2070 2071```ts 2072import { dataSharePredicates } from '@kit.ArkData'; 2073 2074async function example() { 2075 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 2076 let fetchOption: photoAccessHelper.FetchOptions = { 2077 fetchColumns: [], 2078 predicates: predicates 2079 }; 2080 let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 2081 let fetchCount = fetchResult.getCount(); 2082 console.info('count:' + fetchCount); 2083 let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getLastObject(); 2084 if (fetchResult.isAfterLast()) { 2085 console.info('photoAsset isAfterLast displayName = ', photoAsset.displayName); 2086 } else { 2087 console.info('photoAsset not isAfterLast.'); 2088 } 2089} 2090``` 2091 2092### close 2093 2094close(): void 2095 2096释放FetchResult实例并使其失效。无法调用其他方法。 2097 2098**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 2099 2100**错误码:** 2101 2102接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 2103 2104| 错误码ID | 错误信息 | 2105| -------- | ---------------------------------------- | 2106| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 2107| 13900020 | Invalid argument. | 2108| 14000011 | System inner fail. | 2109 2110**示例:** 2111 2112```ts 2113import { dataSharePredicates } from '@kit.ArkData'; 2114 2115async function example() { 2116 console.info('fetchResultCloseDemo'); 2117 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 2118 let fetchOption: photoAccessHelper.FetchOptions = { 2119 fetchColumns: [], 2120 predicates: predicates 2121 }; 2122 try { 2123 let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 2124 fetchResult.close(); 2125 console.info('close succeed.'); 2126 } catch (err) { 2127 console.error(`close fail. error: ${err.code}, ${err.message}`); 2128 } 2129} 2130``` 2131 2132### getFirstObject 2133 2134getFirstObject(callback: AsyncCallback<T>): void 2135 2136获取文件检索结果中的第一个文件资产。此方法使用callback形式返回结果。 2137 2138**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 2139 2140**参数:** 2141 2142| 参数名 | 类型 | 必填 | 说明 | 2143| -------- | --------------------------------------------- | ---- | ------------------------------------------- | 2144| callback | AsyncCallback<T> | 是 | 异步获取结果集中的第一个完成后的回调。 | 2145 2146**错误码:** 2147 2148接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 2149 2150| 错误码ID | 错误信息 | 2151| -------- | ---------------------------------------- | 2152| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 2153| 13900020 | Invalid argument. | 2154| 14000011 | System inner fail. | 2155 2156**示例:** 2157 2158```ts 2159import { dataSharePredicates } from '@kit.ArkData'; 2160 2161async function example() { 2162 console.info('getFirstObjectDemo'); 2163 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 2164 let fetchOption: photoAccessHelper.FetchOptions = { 2165 fetchColumns: [], 2166 predicates: predicates 2167 }; 2168 let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 2169 fetchResult.getFirstObject((err, photoAsset) => { 2170 if (photoAsset !== undefined) { 2171 console.info('photoAsset displayName: ', photoAsset.displayName); 2172 } else { 2173 console.error(`photoAsset failed with err:${err.code}, ${err.message}`); 2174 } 2175 }); 2176} 2177``` 2178 2179### getFirstObject 2180 2181getFirstObject(): Promise<T> 2182 2183获取文件检索结果中的第一个文件资产。此方法使用promise方式来异步返回。 2184 2185**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 2186 2187**返回值:** 2188 2189| 类型 | 说明 | 2190| --------------------------------------- | -------------------------- | 2191| Promise<T> | Promise对象,返回结果集中第一个对象。 | 2192 2193**错误码:** 2194 2195接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 2196 2197| 错误码ID | 错误信息 | 2198| -------- | ---------------------------------------- | 2199| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 2200| 13900020 | Invalid argument. | 2201| 14000011 | System inner fail. | 2202 2203**示例:** 2204 2205```ts 2206import { dataSharePredicates } from '@kit.ArkData'; 2207 2208async function example() { 2209 console.info('getFirstObjectDemo'); 2210 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 2211 let fetchOption: photoAccessHelper.FetchOptions = { 2212 fetchColumns: [], 2213 predicates: predicates 2214 }; 2215 let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 2216 let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 2217 console.info('photoAsset displayName: ', photoAsset.displayName); 2218} 2219``` 2220 2221### getNextObject 2222 2223getNextObject(callback: AsyncCallback<T>): void 2224 2225获取文件检索结果中的下一个文件资产。此方法使用callback形式返回结果。 2226在调用此方法之前,必须使用[isAfterLast()](#isafterlast)来检查当前位置是否为最后一行。 2227 2228**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 2229 2230**参数:** 2231 2232| 参数名 | 类型 | 必填 | 说明 | 2233| --------- | --------------------------------------------- | ---- | ----------------------------------------- | 2234| callback | AsyncCallback<T> | 是 | 异步返回结果集中下一个之后的回调。 | 2235 2236**错误码:** 2237 2238接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 2239 2240| 错误码ID | 错误信息 | 2241| -------- | ---------------------------------------- | 2242| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 2243| 13900020 | Invalid argument. | 2244| 14000011 | System inner fail. | 2245 2246**示例:** 2247 2248```ts 2249import { dataSharePredicates } from '@kit.ArkData'; 2250 2251async function example() { 2252 console.info('getNextObjectDemo'); 2253 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 2254 let fetchOption: photoAccessHelper.FetchOptions = { 2255 fetchColumns: [], 2256 predicates: predicates 2257 }; 2258 let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 2259 await fetchResult.getFirstObject(); 2260 if (!fetchResult.isAfterLast()) { 2261 fetchResult.getNextObject((err, photoAsset) => { 2262 if (photoAsset !== undefined) { 2263 console.info('photoAsset displayName: ', photoAsset.displayName); 2264 } else { 2265 console.error(`photoAsset failed with err: ${err.code}, ${err.message}`); 2266 } 2267 }); 2268 } 2269} 2270``` 2271 2272### getNextObject 2273 2274getNextObject(): Promise<T> 2275 2276获取文件检索结果中的下一个文件资产。此方法使用promise方式来异步返回。 2277在调用此方法之前,必须使用[isAfterLast()](#isafterlast)来检查当前位置是否为最后一行。 2278 2279**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 2280 2281**返回值:** 2282 2283| 类型 | 说明 | 2284| --------------------------------------- | ----------------- | 2285| Promise<T> | Promise对象,返回结果集中下一个对象。 | 2286 2287**错误码:** 2288 2289接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 2290 2291| 错误码ID | 错误信息 | 2292| -------- | ---------------------------------------- | 2293| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 2294| 13900020 | Invalid argument. | 2295| 14000011 | System inner fail. | 2296 2297**示例:** 2298 2299```ts 2300import { dataSharePredicates } from '@kit.ArkData'; 2301 2302async function example() { 2303 console.info('getNextObjectDemo'); 2304 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 2305 let fetchOption: photoAccessHelper.FetchOptions = { 2306 fetchColumns: [], 2307 predicates: predicates 2308 }; 2309 let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 2310 await fetchResult.getFirstObject(); 2311 if (!fetchResult.isAfterLast()) { 2312 let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getNextObject(); 2313 console.info('photoAsset displayName: ', photoAsset.displayName); 2314 } 2315} 2316``` 2317 2318### getLastObject 2319 2320getLastObject(callback: AsyncCallback<T>): void 2321 2322获取文件检索结果中的最后一个文件资产。此方法使用callback回调来返回。 2323 2324**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 2325 2326**参数:** 2327 2328| 参数名 | 类型 | 必填 | 说明 | 2329| -------- | --------------------------------------------- | ---- | --------------------------- | 2330| callback | AsyncCallback<T> | 是 | 异步返回结果集中最后一个的回调。 | 2331 2332**错误码:** 2333 2334接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 2335 2336| 错误码ID | 错误信息 | 2337| -------- | ---------------------------------------- | 2338| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 2339| 13900020 | Invalid argument. | 2340| 14000011 | System inner fail. | 2341 2342**示例:** 2343 2344```ts 2345import { dataSharePredicates } from '@kit.ArkData'; 2346 2347async function example() { 2348 console.info('getLastObjectDemo'); 2349 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 2350 let fetchOption: photoAccessHelper.FetchOptions = { 2351 fetchColumns: [], 2352 predicates: predicates 2353 }; 2354 let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 2355 fetchResult.getLastObject((err, photoAsset) => { 2356 if (photoAsset !== undefined) { 2357 console.info('photoAsset displayName: ', photoAsset.displayName); 2358 } else { 2359 console.error(`photoAsset failed with err: ${err.code}, ${err.message}`); 2360 } 2361 }); 2362} 2363``` 2364 2365### getLastObject 2366 2367getLastObject(): Promise<T> 2368 2369获取文件检索结果中的最后一个文件资产。此方法使用Promise方式来返回。 2370 2371**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 2372 2373**返回值:** 2374 2375| 类型 | 说明 | 2376| --------------------------------------- | ----------------- | 2377| Promise<T> | Promise对象,返回结果集中最后一个对象。 | 2378 2379**错误码:** 2380 2381接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 2382 2383| 错误码ID | 错误信息 | 2384| -------- | ---------------------------------------- | 2385| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 2386| 13900020 | Invalid argument. | 2387| 14000011 | System inner fail. | 2388 2389**示例:** 2390 2391```ts 2392import { dataSharePredicates } from '@kit.ArkData'; 2393 2394async function example() { 2395 console.info('getLastObjectDemo'); 2396 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 2397 let fetchOption: photoAccessHelper.FetchOptions = { 2398 fetchColumns: [], 2399 predicates: predicates 2400 }; 2401 let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 2402 let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getLastObject(); 2403 console.info('photoAsset displayName: ', photoAsset.displayName); 2404} 2405``` 2406 2407### getObjectByPosition 2408 2409getObjectByPosition(index: number, callback: AsyncCallback<T>): void 2410 2411获取文件检索结果中具有指定索引的文件资产。此方法使用callback来返回。 2412 2413**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 2414 2415**参数:** 2416 2417| 参数名 | 类型 | 必填 | 说明 | 2418| -------- | ---------------------------------------- | ---- | ------------------ | 2419| index | number | 是 | 要获取的文件的索引,从0开始。 | 2420| callback | AsyncCallback<T> | 是 | 异步返回指定索引的文件资产的回调。 | 2421 2422**错误码:** 2423 2424接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 2425 2426| 错误码ID | 错误信息 | 2427| -------- | ---------------------------------------- | 2428| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 2429| 13900020 | Invalid argument. | 2430| 14000011 | System inner fail. | 2431 2432**示例:** 2433 2434```ts 2435import { dataSharePredicates } from '@kit.ArkData'; 2436 2437async function example() { 2438 console.info('getObjectByPositionDemo'); 2439 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 2440 let fetchOption: photoAccessHelper.FetchOptions = { 2441 fetchColumns: [], 2442 predicates: predicates 2443 }; 2444 let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 2445 fetchResult.getObjectByPosition(0, (err, photoAsset) => { 2446 if (photoAsset !== undefined) { 2447 console.info('photoAsset displayName: ', photoAsset.displayName); 2448 } else { 2449 console.error(`photoAsset failed with err: ${err.code}, ${err.message}`); 2450 } 2451 }); 2452} 2453``` 2454 2455### getObjectByPosition 2456 2457getObjectByPosition(index: number): Promise<T> 2458 2459获取文件检索结果中具有指定索引的文件资产。此方法使用Promise形式返回文件Asset。 2460 2461**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 2462 2463**参数:** 2464 2465| 参数名 | 类型 | 必填 | 说明 | 2466| ----- | ------ | ---- | -------------- | 2467| index | number | 是 | 要获取的文件的索引,从0开始。 | 2468 2469**返回值:** 2470 2471| 类型 | 说明 | 2472| --------------------------------------- | ----------------- | 2473| Promise<T> | Promise对象,返回结果集中指定索引的一个对象。 | 2474 2475**错误码:** 2476 2477接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 2478 2479| 错误码ID | 错误信息 | 2480| -------- | ---------------------------------------- | 2481| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 2482| 13900020 | Invalid argument. | 2483| 14000011 | System inner fail. | 2484 2485**示例:** 2486 2487```ts 2488import { dataSharePredicates } from '@kit.ArkData'; 2489 2490async function example() { 2491 console.info('getObjectByPositionDemo'); 2492 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 2493 let fetchOption: photoAccessHelper.FetchOptions = { 2494 fetchColumns: [], 2495 predicates: predicates 2496 }; 2497 let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 2498 let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getObjectByPosition(0); 2499 console.info('photoAsset displayName: ', photoAsset.displayName); 2500} 2501``` 2502 2503### getAllObjects 2504 2505getAllObjects(callback: AsyncCallback<Array<T>>): void 2506 2507获取文件检索结果中的所有文件资产。此方法使用callback形式返回结果。 2508 2509**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 2510 2511**参数:** 2512 2513| 参数名 | 类型 | 必填 | 说明 | 2514| -------- | --------------------------------------------- | ---- | ------------------------------------------- | 2515| callback | AsyncCallback<Array<T>> | 是 | 异步获取结果集中的所有文件资产完成后的回调。 | 2516 2517**错误码:** 2518 2519接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 2520 2521| 错误码ID | 错误信息 | 2522| -------- | ---------------------------------------- | 2523| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 2524| 13900020 | Invalid argument. | 2525| 14000011 | System inner fail. | 2526 2527**示例:** 2528 2529```ts 2530import { dataSharePredicates } from '@kit.ArkData'; 2531 2532async function example() { 2533 console.info('getAllObjectDemo'); 2534 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 2535 let fetchOption: photoAccessHelper.FetchOptions = { 2536 fetchColumns: [], 2537 predicates: predicates 2538 }; 2539 let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 2540 fetchResult.getAllObjects((err, photoAssetList) => { 2541 if (photoAssetList !== undefined) { 2542 console.info('photoAssetList length: ', photoAssetList.length); 2543 } else { 2544 console.error(`photoAssetList failed with err:${err.code}, ${err.message}`); 2545 } 2546 }); 2547} 2548``` 2549 2550### getAllObjects 2551 2552getAllObjects(): Promise<Array<T>> 2553 2554获取文件检索结果中的所有文件资产。此方法使用promise方式来异步返回。 2555 2556**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 2557 2558**返回值:** 2559 2560| 类型 | 说明 | 2561| --------------------------------------- | -------------------------- | 2562| Promise<Array<T>> | Promise对象,返回结果集中所有文件资产数组。 | 2563 2564**错误码:** 2565 2566接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 2567 2568| 错误码ID | 错误信息 | 2569| -------- | ---------------------------------------- | 2570| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 2571| 13900020 | Invalid argument. | 2572| 14000011 | System inner fail. | 2573 2574**示例:** 2575 2576```ts 2577import { dataSharePredicates } from '@kit.ArkData'; 2578 2579async function example() { 2580 console.info('getAllObjectDemo'); 2581 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 2582 let fetchOption: photoAccessHelper.FetchOptions = { 2583 fetchColumns: [], 2584 predicates: predicates 2585 }; 2586 let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 2587 let photoAssetList: Array<photoAccessHelper.PhotoAsset> = await fetchResult.getAllObjects(); 2588 console.info('photoAssetList length: ', photoAssetList.length); 2589} 2590``` 2591 2592## Album 2593 2594实体相册 2595 2596### 属性 2597 2598**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 2599 2600| 名称 | 类型 | 可读 | 可写 | 说明 | 2601| ------------ | ------ | ---- | ---- | ------- | 2602| albumType | [AlbumType](#albumtype) | 是 | 否 | 相册类型。 | 2603| albumSubtype | [AlbumSubtype](#albumsubtype) | 是 | 否 | 相册子类型。 | 2604| albumName | string | 是 | 用户相册可写,预置相册不可写 | 相册名称。 | 2605| albumUri | string | 是 | 否 | 相册Uri。 | 2606| count | number | 是 | 否 | 相册中文件数量。 | 2607| coverUri | string | 是 | 否 | 封面文件Uri。 | 2608| imageCount<sup>11+</sup> | number | 是 | 否 | 相册中图片数量。| 2609| videoCount<sup>11+</sup> | number | 是 | 否 | 相册中视频数量。| 2610 2611### getAssets 2612 2613getAssets(options: FetchOptions, callback: AsyncCallback<FetchResult<PhotoAsset>>): void 2614 2615获取相册中的文件。该方法使用callback形式来返回文件。 2616 2617**需要权限**:ohos.permission.READ_IMAGEVIDEO 2618 2619**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 2620 2621**参数:** 2622 2623| 参数名 | 类型 | 必填 | 说明 | 2624| -------- | ------------------------- | ---- | ---------- | 2625| options | [FetchOptions](#fetchoptions) | 是 | 检索选项。 | 2626| callback | AsyncCallback<[FetchResult](#fetchresult)<[PhotoAsset](#photoasset)>> | 是 | callback返回图片和视频数据结果集。 | 2627 2628**错误码:** 2629 2630接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 2631 2632| 错误码ID | 错误信息 | 2633| -------- | ---------------------------------------- | 2634| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 2635| 13900012 | Permission denied. | 2636| 13900020 | Invalid argument. | 2637| 14000011 | System inner fail. | 2638 2639**示例:** 2640 2641```ts 2642import { dataSharePredicates } from '@kit.ArkData'; 2643 2644async function example() { 2645 console.info('albumGetAssetsDemoCallback'); 2646 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 2647 let albumFetchOptions: photoAccessHelper.FetchOptions = { 2648 fetchColumns: [], 2649 predicates: predicates 2650 }; 2651 let fetchOption: photoAccessHelper.FetchOptions = { 2652 fetchColumns: [], 2653 predicates: predicates 2654 }; 2655 let albumList: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC, albumFetchOptions); 2656 let album: photoAccessHelper.Album = await albumList.getFirstObject(); 2657 album.getAssets(fetchOption, (err, albumFetchResult) => { 2658 if (albumFetchResult !== undefined) { 2659 console.info('album getAssets successfully, getCount: ' + albumFetchResult.getCount()); 2660 } else { 2661 console.error(`album getAssets failed with error: ${err.code}, ${err.message}`); 2662 } 2663 }); 2664} 2665``` 2666 2667### getAssets 2668 2669getAssets(options: FetchOptions): Promise<FetchResult<PhotoAsset>> 2670 2671获取相册中的文件。该方法使用Promise来返回文件。 2672 2673**需要权限**:ohos.permission.READ_IMAGEVIDEO 2674 2675**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 2676 2677**参数:** 2678 2679| 参数名 | 类型 | 必填 | 说明 | 2680| -------- | ------------------------- | ---- | ---------- | 2681| options | [FetchOptions](#fetchoptions) | 是 | 检索选项。 | 2682 2683**返回值:** 2684 2685| 类型 | 说明 | 2686| --------------------------------------- | ----------------- | 2687| Promise<[FetchResult](#fetchresult)<[PhotoAsset](#photoasset)>> | Promise对象,返回图片和视频数据结果集。 | 2688 2689**错误码:** 2690 2691接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 2692 2693| 错误码ID | 错误信息 | 2694| -------- | ---------------------------------------- | 2695| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 2696| 13900012 | Permission denied. | 2697| 13900020 | Invalid argument. | 2698| 14000011 | System inner fail. | 2699 2700**示例:** 2701 2702```ts 2703import { dataSharePredicates } from '@kit.ArkData'; 2704import { BusinessError } from '@kit.BasicServicesKit'; 2705 2706async function example() { 2707 console.info('albumGetAssetsDemoPromise'); 2708 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 2709 let albumFetchOptions: photoAccessHelper.FetchOptions = { 2710 fetchColumns: [], 2711 predicates: predicates 2712 }; 2713 let fetchOption: photoAccessHelper.FetchOptions = { 2714 fetchColumns: [], 2715 predicates: predicates 2716 }; 2717 let albumList: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC, albumFetchOptions); 2718 let album: photoAccessHelper.Album = await albumList.getFirstObject(); 2719 album.getAssets(fetchOption).then((albumFetchResult) => { 2720 console.info('album getAssets successfully, getCount: ' + albumFetchResult.getCount()); 2721 }).catch((err: BusinessError) => { 2722 console.error(`album getAssets failed with error: ${err.code}, ${err.message}`); 2723 }); 2724} 2725``` 2726 2727### commitModify 2728 2729commitModify(callback: AsyncCallback<void>): void 2730 2731更新相册属性修改到数据库中。该方法使用callback形式来返回结果。 2732 2733**需要权限**:ohos.permission.WRITE_IMAGEVIDEO 2734 2735**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 2736 2737**参数:** 2738 2739| 参数名 | 类型 | 必填 | 说明 | 2740| -------- | ------------------------- | ---- | ---------- | 2741| callback | AsyncCallback<void> | 是 | callback返回void。 | 2742 2743**错误码:** 2744 2745接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 2746 2747| 错误码ID | 错误信息 | 2748| -------- | ---------------------------------------- | 2749| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 2750| 13900012 | Permission denied. | 2751| 13900020 | Invalid argument. | 2752| 14000011 | System inner fail. | 2753 2754**示例:** 2755 2756```ts 2757import { dataSharePredicates } from '@kit.ArkData'; 2758 2759async function example() { 2760 console.info('albumCommitModifyDemo'); 2761 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 2762 let albumFetchOptions: photoAccessHelper.FetchOptions = { 2763 fetchColumns: [], 2764 predicates: predicates 2765 }; 2766 let albumList: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC, albumFetchOptions); 2767 let album: photoAccessHelper.Album = await albumList.getFirstObject(); 2768 album.albumName = 'hello'; 2769 album.commitModify((err) => { 2770 if (err !== undefined) { 2771 console.error(`commitModify failed with error: ${err.code}, ${err.message}`); 2772 } else { 2773 console.info('commitModify successfully'); 2774 } 2775 }); 2776} 2777``` 2778 2779### commitModify 2780 2781commitModify(): Promise<void> 2782 2783更新相册属性修改到数据库中。该方法使用Promise来返回结果。 2784 2785**需要权限**:ohos.permission.WRITE_IMAGEVIDEO 2786 2787**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 2788 2789**返回值:** 2790 2791| 类型 | 说明 | 2792| ------------------- | ------------ | 2793| Promise<void> | Promise对象,返回void。 | 2794 2795**错误码:** 2796 2797接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 2798 2799| 错误码ID | 错误信息 | 2800| -------- | ---------------------------------------- | 2801| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 2802| 13900012 | Permission denied. | 2803| 13900020 | Invalid argument. | 2804| 14000011 | System inner fail. | 2805 2806**示例:** 2807 2808```ts 2809import { dataSharePredicates } from '@kit.ArkData'; 2810import { BusinessError } from '@kit.BasicServicesKit'; 2811 2812async function example() { 2813 console.info('albumCommitModifyDemo'); 2814 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 2815 let albumFetchOptions: photoAccessHelper.FetchOptions = { 2816 fetchColumns: [], 2817 predicates: predicates 2818 }; 2819 let albumList: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC, albumFetchOptions); 2820 let album: photoAccessHelper.Album = await albumList.getFirstObject(); 2821 album.albumName = 'hello'; 2822 album.commitModify().then(() => { 2823 console.info('commitModify successfully'); 2824 }).catch((err: BusinessError) => { 2825 console.error(`commitModify failed with error: ${err.code}, ${err.message}`); 2826 }); 2827} 2828``` 2829 2830### addAssets<sup>(deprecated)</sup> 2831 2832addAssets(assets: Array<PhotoAsset>, callback: AsyncCallback<void>): void 2833 2834往相册中添加图片或者视频,需要先预置相册和文件资源。该方法使用callback形式来返回结果。 2835 2836> **说明:** 2837> 2838> 从API version 10开始支持,从API version 11开始废弃。建议使用[MediaAlbumChangeRequest.addAssets](#addassets11)替代。 2839 2840**需要权限**:ohos.permission.WRITE_IMAGEVIDEO 2841 2842**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 2843 2844**参数:** 2845 2846| 参数名 | 类型 | 必填 | 说明 | 2847| -------- | ------------------------- | ---- | ---------- | 2848| assets | Array<[PhotoAsset](#photoasset)> | 是 | 待添加到相册中的图片或视频数组。 | 2849| callback | AsyncCallback<void> | 是 | callback返回void。 | 2850 2851**错误码:** 2852 2853接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 2854 2855| 错误码ID | 错误信息 | 2856| -------- | ---------------------------------------- | 2857| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 2858| 13900012 | Permission denied. | 2859| 13900020 | Invalid argument. | 2860| 14000011 | System inner fail. | 2861 2862**示例:** 2863 2864```ts 2865import { dataSharePredicates } from '@kit.ArkData'; 2866 2867async function example() { 2868 try { 2869 console.info('addAssetsDemoCallback'); 2870 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 2871 let fetchOption: photoAccessHelper.FetchOptions = { 2872 fetchColumns: [], 2873 predicates: predicates 2874 }; 2875 let albumFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC); 2876 let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject(); 2877 let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 2878 let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 2879 album.addAssets([asset], (err) => { 2880 if (err === undefined) { 2881 console.info('album addAssets successfully'); 2882 } else { 2883 console.error(`album addAssets failed with error: ${err.code}, ${err.message}`); 2884 } 2885 }); 2886 } catch (err) { 2887 console.error(`addAssetsDemoCallback failed with error: ${err.code}, ${err.message}`); 2888 } 2889} 2890``` 2891 2892### addAssets<sup>(deprecated)</sup> 2893 2894addAssets(assets: Array<PhotoAsset>): Promise<void> 2895 2896往相册中添加图片或者视频,需要先预置相册和文件资源。该方法使用Promise来返回结果。 2897 2898> **说明:** 2899> 2900> 从API version 10开始支持,从API version 11开始废弃。建议使用[MediaAlbumChangeRequest.addAssets](#addassets11)替代。 2901 2902**需要权限**:ohos.permission.WRITE_IMAGEVIDEO 2903 2904**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 2905 2906**参数:** 2907 2908| 参数名 | 类型 | 必填 | 说明 | 2909| -------- | ------------------------- | ---- | ---------- | 2910| assets | Array<[PhotoAsset](#photoasset)> | 是 | 待添加到相册中的图片或视频数组。 | 2911 2912**返回值:** 2913 2914| 类型 | 说明 | 2915| --------------------------------------- | ----------------- | 2916|Promise<void> | Promise对象,返回void。 | 2917 2918**错误码:** 2919 2920接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 2921 2922| 错误码ID | 错误信息 | 2923| -------- | ---------------------------------------- | 2924| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 2925| 13900012 | Permission denied. | 2926| 13900020 | Invalid argument. | 2927| 14000011 | System inner fail. | 2928 2929**示例:** 2930 2931```ts 2932import { dataSharePredicates } from '@kit.ArkData'; 2933import { BusinessError } from '@kit.BasicServicesKit'; 2934 2935async function example() { 2936 try { 2937 console.info('addAssetsDemoPromise'); 2938 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 2939 let fetchOption: photoAccessHelper.FetchOptions = { 2940 fetchColumns: [], 2941 predicates: predicates 2942 }; 2943 let albumFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC); 2944 let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject(); 2945 let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 2946 let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 2947 album.addAssets([asset]).then(() => { 2948 console.info('album addAssets successfully'); 2949 }).catch((err: BusinessError) => { 2950 console.error(`album addAssets failed with error: ${err.code}, ${err.message}`); 2951 }); 2952 } catch (err) { 2953 console.error(`addAssetsDemoPromise failed with error: ${err.code}, ${err.message}`); 2954 } 2955} 2956``` 2957 2958### removeAssets<sup>(deprecated)</sup> 2959 2960removeAssets(assets: Array<PhotoAsset>, callback: AsyncCallback<void>): void 2961 2962从相册中移除图片或者视频,需要先预置相册和文件资源。该方法使用callback形式来返回结果。 2963 2964> **说明:** 2965> 2966> 从API version 10开始支持,从API version 11开始废弃。建议使用[MediaAlbumChangeRequest.removeAssets](#removeassets11)替代。 2967 2968**需要权限**:ohos.permission.WRITE_IMAGEVIDEO 2969 2970**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 2971 2972**参数:** 2973 2974| 参数名 | 类型 | 必填 | 说明 | 2975| -------- | ------------------------- | ---- | ---------- | 2976| assets | Array<[PhotoAsset](#photoasset)> | 是 | 相册中待移除的图片或视频数组。 | 2977| callback | AsyncCallback<void> | 是 | callback返回void。 | 2978 2979**错误码:** 2980 2981接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 2982 2983| 错误码ID | 错误信息 | 2984| -------- | ---------------------------------------- | 2985| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 2986| 13900012 | Permission denied. | 2987| 13900020 | Invalid argument. | 2988| 14000011 | System inner fail. | 2989 2990**示例:** 2991 2992```ts 2993import { dataSharePredicates } from '@kit.ArkData'; 2994 2995async function example() { 2996 try { 2997 console.info('removeAssetsDemoCallback'); 2998 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 2999 let fetchOption: photoAccessHelper.FetchOptions = { 3000 fetchColumns: [], 3001 predicates: predicates 3002 }; 3003 let albumFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC); 3004 let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject(); 3005 let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await album.getAssets(fetchOption); 3006 let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 3007 album.removeAssets([asset], (err) => { 3008 if (err === undefined) { 3009 console.info('album removeAssets successfully'); 3010 } else { 3011 console.error(`album removeAssets failed with error: ${err.code}, ${err.message}`); 3012 } 3013 }); 3014 } catch (err) { 3015 console.error(`removeAssetsDemoCallback failed with error: ${err.code}, ${err.message}`); 3016 } 3017} 3018``` 3019 3020### removeAssets<sup>(deprecated)</sup> 3021 3022removeAssets(assets: Array<PhotoAsset>): Promise<void> 3023 3024从相册中移除图片或者视频,需要先预置相册和文件资源。该方法使用Promise来返回结果。 3025 3026> **说明:** 3027> 3028> 从API version 10开始支持,从API version 11开始废弃。建议使用[MediaAlbumChangeRequest.removeAssets](#removeassets11)替代。 3029 3030**需要权限**:ohos.permission.WRITE_IMAGEVIDEO 3031 3032**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 3033 3034**参数:** 3035 3036| 参数名 | 类型 | 必填 | 说明 | 3037| -------- | ------------------------- | ---- | ---------- | 3038| assets | Array<[PhotoAsset](#photoasset)> | 是 | 相册中待移除的图片或视频数组。 | 3039 3040**返回值:** 3041 3042| 类型 | 说明 | 3043| --------------------------------------- | ----------------- | 3044|Promise<void> | Promise对象,返回void。 | 3045 3046**错误码:** 3047 3048接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 3049 3050| 错误码ID | 错误信息 | 3051| -------- | ---------------------------------------- | 3052| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 3053| 13900012 | Permission denied. | 3054| 13900020 | Invalid argument. | 3055| 14000011 | System inner fail. | 3056 3057**示例:** 3058 3059```ts 3060import { dataSharePredicates } from '@kit.ArkData'; 3061import { BusinessError } from '@kit.BasicServicesKit'; 3062 3063async function example() { 3064 try { 3065 console.info('removeAssetsDemoPromise'); 3066 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 3067 let fetchOption: photoAccessHelper.FetchOptions = { 3068 fetchColumns: [], 3069 predicates: predicates 3070 }; 3071 let albumFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC); 3072 let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject(); 3073 let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await album.getAssets(fetchOption); 3074 let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 3075 album.removeAssets([asset]).then(() => { 3076 console.info('album removeAssets successfully'); 3077 }).catch((err: BusinessError) => { 3078 console.error(`album removeAssets failed with error: ${err.code}, ${err.message}`); 3079 }); 3080 } catch (err) { 3081 console.error(`removeAssetsDemoPromise failed with error: ${err.code}, ${err.message}`); 3082 } 3083} 3084``` 3085 3086## MediaAssetChangeRequest<sup>11+</sup> 3087 3088资产变更请求。 3089 3090**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 3091 3092### constructor<sup>11+</sup> 3093 3094constructor(asset: PhotoAsset) 3095 3096构造函数。 3097 3098**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 3099 3100**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 3101 3102**参数:** 3103 3104| 参数名 | 类型 | 必填 | 说明 | 3105| -------- | ------------------------- | ---- | ---------- | 3106| asset | [PhotoAsset](#photoasset) | 是 | 需要变更的资产。 | 3107 3108**错误码:** 3109 3110接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 3111 3112| 错误码ID | 错误信息 | 3113| -------- | ---------------------------------------- | 3114| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 3115| 14000011 | System inner fail. | 3116 3117**示例:** 3118 3119```ts 3120import { dataSharePredicates } from '@kit.ArkData'; 3121 3122async function example() { 3123 console.info('MediaAssetChangeRequest constructorDemo'); 3124 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 3125 let fetchOptions: photoAccessHelper.FetchOptions = { 3126 fetchColumns: [], 3127 predicates: predicates 3128 }; 3129 let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions); 3130 let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 3131 let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = new photoAccessHelper.MediaAssetChangeRequest(photoAsset); 3132} 3133``` 3134 3135### createImageAssetRequest<sup>11+</sup> 3136 3137static createImageAssetRequest(context: Context, fileUri: string): MediaAssetChangeRequest 3138 3139创建图片资产变更请求。 3140 3141通过fileUri指定待创建资产的数据来源,可参考[FileUri](../apis-core-file-kit/js-apis-file-fileuri.md)。 3142 3143**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 3144 3145**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 3146 3147**参数:** 3148 3149| 参数名 | 类型 | 必填 | 说明 | 3150| ------- | ------- | ---- | -------------------------- | 3151| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | 是 | 传入Ability实例的Context。 | 3152| fileUri | string | 是 | 图片资产的数据来源,在应用沙箱下的uri。 | 3153 3154**返回值:** 3155 3156| 类型 | 说明 | 3157| --------------------------------------- | ----------------- | 3158| [MediaAssetChangeRequest](#mediaassetchangerequest11) | 返回创建资产的变更请求。 | 3159 3160**错误码:** 3161 3162接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 3163 3164| 错误码ID | 错误信息 | 3165| -------- | ---------------------------------------- | 3166| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 3167| 13900002 | No such file. | 3168| 14000011 | System inner fail. | 3169 3170**示例:** 3171 3172```ts 3173async function example() { 3174 console.info('createImageAssetRequestDemo'); 3175 try { 3176 // 需要确保fileUri对应的资源存在 3177 let fileUri = 'file://com.example.temptest/data/storage/el2/base/haps/entry/files/test.jpg'; 3178 let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = photoAccessHelper.MediaAssetChangeRequest.createImageAssetRequest(context, fileUri); 3179 await phAccessHelper.applyChanges(assetChangeRequest); 3180 console.info('apply createImageAssetRequest successfully'); 3181 } catch (err) { 3182 console.error(`createImageAssetRequestDemo failed with error: ${err.code}, ${err.message}`); 3183 } 3184} 3185``` 3186 3187### createVideoAssetRequest<sup>11+</sup> 3188 3189static createVideoAssetRequest(context: Context, fileUri: string): MediaAssetChangeRequest 3190 3191创建视频资产变更请求。 3192 3193通过fileUri指定待创建资产的数据来源,可参考[FileUri](../apis-core-file-kit/js-apis-file-fileuri.md)。 3194 3195**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 3196 3197**参数:** 3198 3199| 参数名 | 类型 | 必填 | 说明 | 3200| ------- | ------- | ---- | -------------------------- | 3201| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | 是 | 传入Ability实例的Context。 | 3202| fileUri | string | 是 | 视频资产的数据来源,在应用沙箱下的uri。 | 3203 3204**返回值:** 3205 3206| 类型 | 说明 | 3207| --------------------------------------- | ----------------- | 3208| [MediaAssetChangeRequest](#mediaassetchangerequest11) | 返回创建资产的变更请求。 | 3209 3210**错误码:** 3211 3212接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 3213 3214| 错误码ID | 错误信息 | 3215| -------- | ---------------------------------------- | 3216| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 3217| 13900002 | No such file. | 3218| 14000011 | System inner fail. | 3219 3220**示例:** 3221 3222```ts 3223async function example() { 3224 console.info('createVideoAssetRequestDemo'); 3225 try { 3226 // 需要确保fileUri对应的资源存在 3227 let fileUri = 'file://com.example.temptest/data/storage/el2/base/haps/entry/files/test.mp4'; 3228 let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = photoAccessHelper.MediaAssetChangeRequest.createVideoAssetRequest(context, fileUri); 3229 await phAccessHelper.applyChanges(assetChangeRequest); 3230 console.info('apply createVideoAssetRequest successfully'); 3231 } catch (err) { 3232 console.error(`createVideoAssetRequestDemo failed with error: ${err.code}, ${err.message}`); 3233 } 3234} 3235``` 3236 3237### createAssetRequest<sup>11+</sup> 3238 3239static createAssetRequest(context: Context, photoType: PhotoType, extension: string, options?: CreateOptions): MediaAssetChangeRequest 3240 3241指定待创建的文件类型和扩展名,创建资产变更请求。 3242 3243**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 3244 3245**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 3246 3247**参数:** 3248 3249| 参数名 | 类型 | 必填 | 说明 | 3250| ------- | ------- | ---- | -------------------------- | 3251| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | 是 | 传入Ability实例的Context。 | 3252| photoType | [PhotoType](#phototype) | 是 | 待创建的文件类型,IMAGE或者VIDEO类型。 | 3253| extension | string | 是 | 文件扩展名,例如:'jpg'。 | 3254| options | [CreateOptions](#createoptions) | 否 | 创建选项,例如:{title: 'testPhoto'}。 | 3255 3256**返回值:** 3257 3258| 类型 | 说明 | 3259| --------------------------------------- | ----------------- | 3260| [MediaAssetChangeRequest](#mediaassetchangerequest11) | 返回创建资产的变更请求。 | 3261 3262**错误码:** 3263 3264接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 3265 3266| 错误码ID | 错误信息 | 3267| -------- | ---------------------------------------- | 3268| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 3269| 14000011 | System inner fail. | 3270 3271**示例:** 3272 3273```ts 3274async function example() { 3275 console.info('createAssetRequestDemo'); 3276 try { 3277 let photoType: photoAccessHelper.PhotoType = photoAccessHelper.PhotoType.IMAGE; 3278 let extension: string = 'jpg'; 3279 let options: photoAccessHelper.CreateOptions = { 3280 title: 'testPhoto' 3281 } 3282 let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = photoAccessHelper.MediaAssetChangeRequest.createAssetRequest(context, photoType, extension, options); 3283 // 需要确保fileUri对应的资源存在 3284 let fileUri = 'file://com.example.temptest/data/storage/el2/base/haps/entry/files/test.jpg'; 3285 assetChangeRequest.addResource(photoAccessHelper.ResourceType.IMAGE_RESOURCE, fileUri); 3286 await phAccessHelper.applyChanges(assetChangeRequest); 3287 console.info('apply createAssetRequest successfully'); 3288 } catch (err) { 3289 console.error(`createAssetRequestDemo failed with error: ${err.code}, ${err.message}`); 3290 } 3291} 3292``` 3293 3294### deleteAssets<sup>11+</sup> 3295 3296static deleteAssets(context: Context, assets: Array<PhotoAsset>): Promise<void> 3297 3298删除媒体文件,删除的文件进入到回收站,使用Promise方式返回结果。 3299 3300**需要权限**:ohos.permission.WRITE_IMAGEVIDEO 3301 3302**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 3303 3304**参数:** 3305 3306| 参数名 | 类型 | 必填 | 说明 | 3307| ------- | ------- | ---- | -------------------------- | 3308| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | 是 | 传入Ability实例的Context。 | 3309| assets | Array<[PhotoAsset](#photoasset)> | 是 | 待删除的媒体文件数组。 | 3310 3311**返回值:** 3312 3313| 类型 | 说明 | 3314| --------------------------------------- | ----------------- | 3315| Promise<void>| Promise对象,返回void。 | 3316 3317**错误码:** 3318 3319接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 3320 3321| 错误码ID | 错误信息 | 3322| -------- | ---------------------------------------- | 3323| 201 | Permission denied. | 3324| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 3325| 14000011 | System inner fail. | 3326 3327**示例:** 3328 3329```ts 3330import { dataSharePredicates } from '@kit.ArkData'; 3331 3332async function example() { 3333 console.info('deleteAssetsDemo'); 3334 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 3335 let fetchOptions: photoAccessHelper.FetchOptions = { 3336 fetchColumns: [], 3337 predicates: predicates 3338 }; 3339 try { 3340 let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions); 3341 let photoAssetList: Array<photoAccessHelper.PhotoAsset> = await fetchResult.getAllObjects(); 3342 await photoAccessHelper.MediaAssetChangeRequest.deleteAssets(context, photoAssetList); 3343 console.info('deleteAssets successfully'); 3344 } catch (err) { 3345 console.error(`deleteAssetsDemo failed with error: ${err.code}, ${err.message}`); 3346 } 3347} 3348``` 3349 3350### deleteAssets<sup>11+</sup> 3351 3352static deleteAssets(context: Context, uriList: Array<string>): Promise<void> 3353 3354删除媒体文件,删除的文件进入到回收站,使用Promise方式返回结果。 3355 3356**需要权限**:ohos.permission.WRITE_IMAGEVIDEO 3357 3358**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 3359 3360**参数:** 3361 3362| 参数名 | 类型 | 必填 | 说明 | 3363| ------- | ------- | ---- | -------------------------- | 3364| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | 是 | 传入Ability实例的Context。 | 3365| uriList | Array<string> | 是 | 待删除的媒体文件uri数组。 | 3366 3367**返回值:** 3368 3369| 类型 | 说明 | 3370| --------------------------------------- | ----------------- | 3371| Promise<void>| Promise对象,返回void。 | 3372 3373**错误码:** 3374 3375接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 3376 3377| 错误码ID | 错误信息 | 3378| -------- | ---------------------------------------- | 3379| 201 | Permission denied. | 3380| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 3381| 14000002 | Invalid asset uri. | 3382| 14000011 | System inner fail. | 3383 3384**示例:** 3385 3386```ts 3387import { dataSharePredicates } from '@kit.ArkData'; 3388 3389async function example() { 3390 console.info('deleteAssetsDemo'); 3391 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 3392 let fetchOptions: photoAccessHelper.FetchOptions = { 3393 fetchColumns: [], 3394 predicates: predicates 3395 }; 3396 try { 3397 let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions); 3398 let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 3399 await photoAccessHelper.MediaAssetChangeRequest.deleteAssets(context, [asset.uri]); 3400 console.info('deleteAssets successfully'); 3401 } catch (err) { 3402 console.error(`deleteAssetsDemo failed with error: ${err.code}, ${err.message}`); 3403 } 3404} 3405``` 3406 3407### getAsset<sup>11+</sup> 3408 3409getAsset(): PhotoAsset 3410 3411获取当前资产变更请求中的资产。 3412 3413**注意**:对于创建资产的变更请求,在调用[applyChanges](#applychanges11)提交生效之前,该接口返回null。 3414 3415**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 3416 3417**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 3418 3419**返回值:** 3420 3421| 类型 | 说明 | 3422| --------------------------------------- | ----------------- | 3423| [PhotoAsset](#photoasset) | 返回当前资产变更请求中的资产。 | 3424 3425**错误码:** 3426 3427接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 3428 3429| 错误码ID | 错误信息 | 3430| -------- | ---------------------------------------- | 3431| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 3432| 14000011 | System inner fail. | 3433 3434**示例:** 3435 3436```ts 3437async function example() { 3438 console.info('getAssetDemo'); 3439 try { 3440 // 需要确保fileUri对应的资源存在 3441 let fileUri = 'file://com.example.temptest/data/storage/el2/base/haps/entry/files/test.jpg'; 3442 let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = photoAccessHelper.MediaAssetChangeRequest.createImageAssetRequest(context, fileUri); 3443 await phAccessHelper.applyChanges(assetChangeRequest); 3444 let asset: photoAccessHelper.PhotoAsset = assetChangeRequest.getAsset(); 3445 console.info('create asset successfully with uri = ' + asset.uri); 3446 } catch (err) { 3447 console.error(`getAssetDemo failed with error: ${err.code}, ${err.message}`); 3448 } 3449} 3450``` 3451 3452### setTitle<sup>11+</sup> 3453 3454setTitle(title: string): void 3455 3456修改媒体资产的标题。 3457 3458**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 3459 3460**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 3461 3462**参数:** 3463 3464| 参数名 | 类型 | 必填 | 说明 | 3465| ---------- | ------- | ---- | ---------------------------------- | 3466| title | string | 是 | 待修改的资产标题。 | 3467 3468title参数规格为: 3469- 不应包含扩展名。 3470- 文件名字符串长度为1~255。 3471- 不允许出现非法字符,包括:<br> . \ / : * ? " ' ` < > | { } [ ] 3472 3473**错误码:** 3474 3475接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 3476 3477| 错误码ID | 错误信息 | 3478| -------- | ---------------------------------------- | 3479| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 3480| 14000011 | System inner fail. | 3481 3482**示例:** 3483 3484```ts 3485import { dataSharePredicates } from '@kit.ArkData'; 3486import { BusinessError } from '@kit.BasicServicesKit'; 3487 3488async function example() { 3489 console.info('setTitleDemo'); 3490 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 3491 let fetchOption: photoAccessHelper.FetchOptions = { 3492 fetchColumns: [], 3493 predicates: predicates 3494 }; 3495 let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 3496 let asset = await fetchResult.getFirstObject(); 3497 let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = new photoAccessHelper.MediaAssetChangeRequest(asset); 3498 let newTitle: string = 'newTitle'; 3499 assetChangeRequest.setTitle(newTitle); 3500 phAccessHelper.applyChanges(assetChangeRequest).then(() => { 3501 console.info('apply setTitle successfully'); 3502 }).catch((err: BusinessError) => { 3503 console.error(`apply setTitle failed with error: ${err.code}, ${err.message}`); 3504 }); 3505} 3506``` 3507 3508### getWriteCacheHandler<sup>11+</sup> 3509 3510getWriteCacheHandler(): Promise<number> 3511 3512获取临时文件写句柄。 3513 3514**注意**:对于同一个资产变更请求,不支持在成功获取临时文件写句柄后,重复调用该接口。 3515 3516**需要权限**:ohos.permission.WRITE_IMAGEVIDEO 3517 3518**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 3519 3520**返回值:** 3521 3522| 类型 | 说明 | 3523| --------------------------------------- | ----------------- | 3524| Promise<number> | Promise对象,返回临时文件写句柄。 | 3525 3526**错误码:** 3527 3528接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 3529 3530| 错误码ID | 错误信息 | 3531| -------- | ---------------------------------------- | 3532| 201 | Permission denied. | 3533| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 3534| 14000011 | System inner fail. | 3535| 14000016 | Operation Not Support. | 3536 3537**示例:** 3538 3539```ts 3540import { fileIo } from '@kit.CoreFileKit'; 3541 3542async function example() { 3543 console.info('getWriteCacheHandlerDemo'); 3544 try { 3545 let photoType: photoAccessHelper.PhotoType = photoAccessHelper.PhotoType.VIDEO; 3546 let extension: string = 'mp4'; 3547 let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = photoAccessHelper.MediaAssetChangeRequest.createAssetRequest(context, photoType, extension); 3548 let fd: number = await assetChangeRequest.getWriteCacheHandler(); 3549 console.info('getWriteCacheHandler successfully'); 3550 // write date into fd 3551 await fileIo.close(fd); 3552 await phAccessHelper.applyChanges(assetChangeRequest); 3553 } catch (err) { 3554 console.error(`getWriteCacheHandlerDemo failed with error: ${err.code}, ${err.message}`); 3555 } 3556} 3557``` 3558 3559### addResource<sup>11+</sup> 3560 3561addResource(type: ResourceType, fileUri: string): void 3562 3563通过fileUri从应用沙箱添加资源。 3564 3565**注意**:对于同一个资产变更请求,不支持在成功添加资源后,重复调用该接口。对于动态照片,可调用两次该接口分别添加图片和视频资源。 3566 3567**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 3568 3569**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 3570 3571**参数:** 3572 3573| 参数名 | 类型 | 必填 | 说明 | 3574| ------- | ------- | ---- | -------------------------- | 3575| type | [ResourceType](#resourcetype11) | 是 | 待添加资源的类型。 | 3576| fileUri | string | 是 | 待添加资源的数据来源,在应用沙箱下的uri。 | 3577 3578**错误码:** 3579 3580接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 3581 3582| 错误码ID | 错误信息 | 3583| -------- | ---------------------------------------- | 3584| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 3585| 13900002 | No such file. | 3586| 14000011 | System inner fail. | 3587| 14000016 | Operation Not Support. | 3588 3589**示例:** 3590 3591```ts 3592async function example() { 3593 console.info('addResourceByFileUriDemo'); 3594 try { 3595 let photoType: photoAccessHelper.PhotoType = photoAccessHelper.PhotoType.IMAGE; 3596 let extension: string = 'jpg'; 3597 let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = photoAccessHelper.MediaAssetChangeRequest.createAssetRequest(context, photoType, extension); 3598 // 需要确保fileUri对应的资源存在 3599 let fileUri = 'file://com.example.temptest/data/storage/el2/base/haps/entry/files/test.jpg'; 3600 assetChangeRequest.addResource(photoAccessHelper.ResourceType.IMAGE_RESOURCE, fileUri); 3601 await phAccessHelper.applyChanges(assetChangeRequest); 3602 console.info('addResourceByFileUri successfully'); 3603 } catch (err) { 3604 console.error(`addResourceByFileUriDemo failed with error: ${err.code}, ${err.message}`); 3605 } 3606} 3607``` 3608 3609### addResource<sup>11+</sup> 3610 3611addResource(type: ResourceType, data: ArrayBuffer): void 3612 3613通过ArrayBuffer数据添加资源。 3614 3615**注意**:对于同一个资产变更请求,不支持在成功添加资源后,重复调用该接口。对于动态照片,可调用两次该接口分别添加图片和视频资源。 3616 3617**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 3618 3619**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 3620 3621**参数:** 3622 3623| 参数名 | 类型 | 必填 | 说明 | 3624| ------- | ------- | ---- | -------------------------- | 3625| type | [ResourceType](#resourcetype11) | 是 | 待添加资源的类型。 | 3626| data | ArrayBuffer | 是 | 待添加资源的数据。 | 3627 3628**错误码:** 3629 3630接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 3631 3632| 错误码ID | 错误信息 | 3633| -------- | ---------------------------------------- | 3634| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 3635| 14000011 | System inner fail. | 3636| 14000016 | Operation Not Support. | 3637 3638**示例:** 3639 3640```ts 3641async function example() { 3642 console.info('addResourceByArrayBufferDemo'); 3643 try { 3644 let photoType: photoAccessHelper.PhotoType = photoAccessHelper.PhotoType.IMAGE; 3645 let extension: string = 'jpg'; 3646 let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = photoAccessHelper.MediaAssetChangeRequest.createAssetRequest(context, photoType, extension); 3647 let buffer: ArrayBuffer = new ArrayBuffer(2048); 3648 assetChangeRequest.addResource(photoAccessHelper.ResourceType.IMAGE_RESOURCE, buffer); 3649 await phAccessHelper.applyChanges(assetChangeRequest); 3650 console.info('addResourceByArrayBuffer successfully'); 3651 } catch (err) { 3652 console.error(`addResourceByArrayBufferDemo failed with error: ${err.code}, ${err.message}`); 3653 } 3654} 3655``` 3656 3657### saveCameraPhoto<sup>12+</sup> 3658 3659saveCameraPhoto(): void 3660 3661保存相机拍摄的照片。 3662 3663**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 3664 3665**错误码:** 3666 3667接口抛出错误码的详细介绍请参见[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 3668 3669| 错误码ID | 错误信息 | 3670| -------- | ---------------------------------------- | 3671| 14000011 | System inner fail. | 3672| 14000016 | Operation Not Support. | 3673 3674**示例:** 3675 3676```ts 3677async function example(asset: photoAccessHelper.PhotoAsset) { 3678 console.info('saveCameraPhotoDemo'); 3679 try { 3680 let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = new photoAccessHelper.MediaAssetChangeRequest(asset); 3681 assetChangeRequest.saveCameraPhoto(); 3682 await phAccessHelper.applyChanges(assetChangeRequest); 3683 console.info('apply saveCameraPhoto successfully'); 3684 } catch (err) { 3685 console.error(`apply saveCameraPhoto failed with error: ${err.code}, ${err.message}`); 3686 } 3687} 3688``` 3689 3690### saveCameraPhoto<sup>13+</sup> 3691 3692saveCameraPhoto(imageFileType: ImageFileType): void 3693 3694保存相机拍摄的照片。 3695 3696**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 3697 3698**参数:** 3699 3700| 参数名 | 类型 | 必填 | 说明 | 3701| -------- | ------------------------- | ---- | ---------- | 3702| imageFileType | [ImageFileType](#imagefiletype13) | 是 | 需要保存的类型。 | 3703 3704**错误码:** 3705 3706接口抛出错误码的详细介绍请参见[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 3707 3708| 错误码ID | 错误信息 | 3709| -------- | ---------------------------------------- | 3710| 14000011 | System inner fail. | 3711| 14000016 | Operation Not Support. | 3712 3713**示例:** 3714 3715```ts 3716import { photoAccessHelper } from '@kit.MediaLibraryKit'; 3717import { dataSharePredicates } from '@kit.ArkData'; 3718import { image } from '@kit.ImageKit'; 3719 3720async function example(asset: photoAccessHelper.PhotoAsset) { 3721 console.info('saveCameraPhotoDemo'); 3722 try { 3723 let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context); 3724 let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = new photoAccessHelper.MediaAssetChangeRequest(asset); 3725 assetChangeRequest.saveCameraPhoto(photoAccessHelper.ImageFileType.JPEG); 3726 await phAccessHelper.applyChanges(assetChangeRequest); 3727 console.info('apply saveCameraPhoto successfully'); 3728 } catch (err) { 3729 console.error(`apply saveCameraPhoto failed with error: ${err.code}, ${err.message}`); 3730 } 3731} 3732``` 3733 3734### discardCameraPhoto<sup>12+</sup> 3735 3736discardCameraPhoto(): void 3737 3738丢弃相机拍摄的照片。 3739 3740**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 3741 3742**错误码:** 3743 3744接口抛出错误码的详细介绍请参见[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 3745 3746| 错误码ID | 错误信息 | 3747| -------- | ---------------------------------------- | 3748| 14000011 | Internal system error. | 3749| 14000016 | Operation Not Support. | 3750 3751**示例:** 3752 3753```ts 3754async function example(asset: photoAccessHelper.PhotoAsset) { 3755 console.info('discardCameraPhotoDemo'); 3756 try { 3757 let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = new photoAccessHelper.MediaAssetChangeRequest(asset); 3758 assetChangeRequest.discardCameraPhoto(); 3759 await phAccessHelper.applyChanges(assetChangeRequest); 3760 console.info('apply discardCameraPhoto successfully'); 3761 } catch (err) { 3762 console.error(`apply discardCameraPhoto failed with error: ${err.code}, ${err.message}`); 3763 } 3764} 3765``` 3766 3767## MediaAlbumChangeRequest<sup>11+</sup> 3768 3769相册变更请求。 3770 3771**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 3772 3773### constructor<sup>11+</sup> 3774 3775constructor(album: Album) 3776 3777构造函数。 3778 3779**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 3780 3781**参数:** 3782 3783| 参数名 | 类型 | 必填 | 说明 | 3784| -------- | ------------------------- | ---- | ---------- | 3785| album | [Album](#album) | 是 | 需要变更的相册。 | 3786 3787**错误码:** 3788 3789接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 3790 3791| 错误码ID | 错误信息 | 3792| -------- | ---------------------------------------- | 3793| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 3794| 14000011 | System inner fail. | 3795 3796**示例:** 3797 3798```ts 3799import { dataSharePredicates } from '@kit.ArkData'; 3800 3801async function example() { 3802 console.info('MediaAlbumChangeRequest constructorDemo'); 3803 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 3804 let fetchOptions: photoAccessHelper.FetchOptions = { 3805 fetchColumns: [], 3806 predicates: predicates 3807 }; 3808 let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC, fetchOptions); 3809 let album: photoAccessHelper.Album = await fetchResult.getFirstObject(); 3810 let albumChangeRequest: photoAccessHelper.MediaAlbumChangeRequest = new photoAccessHelper.MediaAlbumChangeRequest(album); 3811} 3812``` 3813 3814### getAlbum<sup>11+</sup> 3815 3816getAlbum(): Album 3817 3818获取当前相册变更请求中的相册。 3819 3820**注意**:对于创建相册的变更请求,在调用[applyChanges](#applychanges11)提交生效之前,该接口返回null。 3821 3822**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 3823 3824**返回值:** 3825 3826| 类型 | 说明 | 3827| --------------------------------------- | ----------------- | 3828| [Album](#album) | 返回当前相册变更请求中的相册。 | 3829 3830**错误码:** 3831 3832接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 3833 3834| 错误码ID | 错误信息 | 3835| -------- | ---------------------------------------- | 3836| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 3837| 14000011 | System inner fail. | 3838 3839**示例:** 3840 3841```ts 3842async function example() { 3843 console.info('getAlbumDemo'); 3844 try { 3845 // 请确保图库内存在用户相册 3846 let albumFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC); 3847 let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject(); 3848 let albumChangeRequest: photoAccessHelper.MediaAlbumChangeRequest = new photoAccessHelper.MediaAlbumChangeRequest(album); 3849 let changeRequestAlbum: photoAccessHelper.Album = albumChangeRequest.getAlbum(); 3850 console.info('change request album uri: ' + changeRequestAlbum.albumUri); 3851 } catch (err) { 3852 console.error(`getAlbumDemo failed with error: ${err.code}, ${err.message}`); 3853 } 3854} 3855``` 3856 3857### setAlbumName<sup>11+</sup> 3858 3859setAlbumName(name: string): void 3860 3861设置相册名称。 3862 3863相册名的参数规格为: 3864- 相册名字符串长度为1~255。 3865- 不允许出现非法字符,包括:<br> . \ / : * ? " ' ` < > | { } [ ] 3866- 英文字符大小写不敏感。 3867- 相册名不允许重名。 3868 3869**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 3870 3871**参数:** 3872 3873| 参数名 | 类型 | 必填 | 说明 | 3874| ---------- | ------- | ---- | ---------------------------------- | 3875| name | string | 是 | 待设置的相册名称。| 3876 3877**错误码:** 3878 3879接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 3880 3881| 错误码ID | 错误信息 | 3882| -------- | ---------------------------------------- | 3883| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 3884| 14000011 | System inner fail. | 3885 3886**示例:** 3887 3888```ts 3889async function example() { 3890 console.info('setAlbumNameDemo'); 3891 try { 3892 let albumFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC); 3893 let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject(); 3894 let albumChangeRequest: photoAccessHelper.MediaAlbumChangeRequest = new photoAccessHelper.MediaAlbumChangeRequest(album); 3895 let newAlbumName: string = 'newAlbumName' + new Date().getTime(); 3896 albumChangeRequest.setAlbumName(newAlbumName); 3897 await phAccessHelper.applyChanges(albumChangeRequest); 3898 console.info('setAlbumName successfully'); 3899 } catch (err) { 3900 console.error(`setAlbumNameDemo failed with error: ${err.code}, ${err.message}`); 3901 } 3902} 3903``` 3904 3905### addAssets<sup>11+</sup> 3906 3907addAssets(assets: Array<PhotoAsset>): void 3908 3909向相册中添加资产。 3910 3911**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 3912 3913**参数:** 3914 3915| 参数名 | 类型 | 必填 | 说明 | 3916| ---------- | ------- | ---- | ---------------------------------- | 3917| assets | Array<[PhotoAsset](#photoasset)> | 是 | 待添加到相册中的资产数组。 | 3918 3919**错误码:** 3920 3921接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 3922 3923| 错误码ID | 错误信息 | 3924| -------- | ---------------------------------------- | 3925| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 3926| 14000011 | System inner fail. | 3927| 14000016 | Operation Not Support. | 3928 3929**示例:** 3930 3931```ts 3932import { dataSharePredicates } from '@kit.ArkData'; 3933 3934async function example() { 3935 console.info('addAssetsDemo'); 3936 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 3937 let fetchOptions: photoAccessHelper.FetchOptions = { 3938 fetchColumns: [], 3939 predicates: predicates 3940 }; 3941 try { 3942 // 请确保图库内存在用户相册和照片 3943 let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions); 3944 let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 3945 let albumFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC); 3946 let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject(); 3947 let albumChangeRequest: photoAccessHelper.MediaAlbumChangeRequest = new photoAccessHelper.MediaAlbumChangeRequest(album); 3948 albumChangeRequest.addAssets([asset]); 3949 await phAccessHelper.applyChanges(albumChangeRequest); 3950 console.info('addAssets successfully'); 3951 } catch (err) { 3952 console.error(`addAssetsDemo failed with error: ${err.code}, ${err.message}`); 3953 } 3954} 3955``` 3956 3957### removeAssets<sup>11+</sup> 3958 3959removeAssets(assets: Array<PhotoAsset>): void 3960 3961从相册中移除资产。 3962 3963**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 3964 3965**参数:** 3966 3967| 参数名 | 类型 | 必填 | 说明 | 3968| ---------- | ------- | ---- | ---------------------------------- | 3969| assets | Array<[PhotoAsset](#photoasset)> | 是 | 待从相册中移除的资产数组。 | 3970 3971**错误码:** 3972 3973接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 3974 3975| 错误码ID | 错误信息 | 3976| -------- | ---------------------------------------- | 3977| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 3978| 14000011 | System inner fail. | 3979| 14000016 | Operation Not Support. | 3980 3981**示例:** 3982 3983```ts 3984import { dataSharePredicates } from '@kit.ArkData'; 3985 3986async function example() { 3987 console.info('removeAssetsDemo'); 3988 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 3989 let fetchOptions: photoAccessHelper.FetchOptions = { 3990 fetchColumns: [], 3991 predicates: predicates 3992 }; 3993 try { 3994 let albumFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC); 3995 let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject(); 3996 let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await album.getAssets(fetchOptions); 3997 let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 3998 3999 let albumChangeRequest: photoAccessHelper.MediaAlbumChangeRequest = new photoAccessHelper.MediaAlbumChangeRequest(album); 4000 albumChangeRequest.removeAssets([asset]); 4001 await phAccessHelper.applyChanges(albumChangeRequest); 4002 console.info('removeAssets successfully'); 4003 } catch (err) { 4004 console.error(`removeAssetsDemo failed with error: ${err.code}, ${err.message}`); 4005 } 4006} 4007``` 4008 4009## MediaAssetManager<sup>11+</sup> 4010 4011媒体资产管理类,管理各种媒体资源的读取操作。 4012 4013**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 4014 4015### requestImage<sup>11+</sup> 4016 4017static requestImage(context: Context, asset: PhotoAsset, requestOptions: RequestOptions, dataHandler: MediaAssetDataHandler<image.ImageSource>): Promise<string> 4018 4019根据不同的策略模式,请求图片资源。 4020 4021**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 4022 4023**需要权限**:ohos.permission.READ_IMAGEVIDEO 4024 4025- 对于未申请'ohos.permission.READ_IMAGEVIDEO'权限的应用,可以通过picker的方式调用该接口来请求图片资源,详情请参考[开发指南](../../media/medialibrary/photoAccessHelper-photoviewpicker.md#指定uri获取图片或视频资源)。 4026- 对于本应用保存到媒体库的图片资源,应用无需额外申请'ohos.permission.READ_IMAGEVIDEO'权限即可访问。 4027 4028**参数:** 4029 4030| 参数名 | 类型 | 必填 | 说明 | 4031|----------------|-----------------------------------------------------------------------------------------------------------| ---- | ------------------------- | 4032| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | 是 | 传入Ability实例的Context。 | 4033| asset | [PhotoAsset](#photoasset) | 是 | 待请求的的媒体文件对象。 | 4034| requestOptions | [RequestOptions](#requestoptions11) | 是 | 图片请求策略模式配置项。| 4035| dataHandler | [MediaAssetDataHandler](#mediaassetdatahandler11)<[image.ImageSource](../apis-image-kit/js-apis-image.md#imagesource)> | 是 | 媒体资源处理器,当所请求的图片资源准备完成时会触发回调。| 4036 4037**返回值:** 4038 4039| 类型 | 说明 | 4040| --------------------------------------- | ----------------- | 4041| Promise\<string> | Promise对象,返回请求id,可用于[cancelRequest](#cancelrequest12)取消请求。 | 4042 4043**错误码:** 4044 4045接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 4046 4047| 错误码ID | 错误信息 | 4048| -------- | ---------------------------------------- | 4049| 201 | Permission denied | 4050| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 4051| 14000011 | System inner fail. | 4052 4053**示例:** 4054 4055```ts 4056import { dataSharePredicates } from '@kit.ArkData'; 4057import { image } from '@kit.ImageKit'; 4058 4059class MediaHandler implements photoAccessHelper.MediaAssetDataHandler<image.ImageSource> { 4060 onDataPrepared(data: image.ImageSource) { 4061 if (data === undefined) { 4062 console.error('Error occurred when preparing data'); 4063 return; 4064 } 4065 console.info('on image data prepared'); 4066 } 4067} 4068 4069async function example() { 4070 console.info('requestImage'); 4071 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 4072 let fetchOptions: photoAccessHelper.FetchOptions = { 4073 fetchColumns: [], 4074 predicates: predicates 4075 }; 4076 let requestOptions: photoAccessHelper.RequestOptions = { 4077 deliveryMode: photoAccessHelper.DeliveryMode.HIGH_QUALITY_MODE, 4078 } 4079 const handler = new MediaHandler(); 4080 4081 phAccessHelper.getAssets(fetchOptions, async (err, fetchResult) => { 4082 console.info('fetchResult success'); 4083 let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 4084 await photoAccessHelper.MediaAssetManager.requestImage(context, photoAsset, requestOptions, handler); 4085 console.info('requestImage successfully'); 4086 }); 4087} 4088``` 4089 4090### requestImageData<sup>11+</sup> 4091 4092static requestImageData(context: Context, asset: PhotoAsset, requestOptions: RequestOptions, dataHandler: MediaAssetDataHandler<ArrayBuffer>): Promise<string> 4093 4094根据不同的策略模式,请求图片资源数据。 4095 4096**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 4097 4098**需要权限**:ohos.permission.READ_IMAGEVIDEO 4099 4100- 对于未申请'ohos.permission.READ_IMAGEVIDEO'权限的应用,可以通过picker的方式调用该接口来请求图片资源数据,详情请参考[开发指南](../../media/medialibrary/photoAccessHelper-photoviewpicker.md#指定uri获取图片或视频资源)。 4101- 对于本应用保存到媒体库的图片资源,应用无需额外申请'ohos.permission.READ_IMAGEVIDEO'权限即可访问。 4102 4103**参数:** 4104 4105| 参数名 | 类型 | 必填 | 说明 | 4106| -------- |----------------------------------------------------------------------| ---- | ------------------------- | 4107| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | 是 | 传入Ability实例的Context。 | 4108| asset | [PhotoAsset](#photoasset) | 是 | 待请求的的媒体文件对象。 | 4109| requestOptions | [RequestOptions](#requestoptions11) | 是 | 图片请求策略模式配置项。 | 4110| dataHandler | [MediaAssetDataHandler](#mediaassetdatahandler11)<ArrayBuffer> | 是 | 媒体资源处理器,当所请求的图片资源准备完成时会触发回调。| 4111 4112**返回值:** 4113 4114| 类型 | 说明 | 4115| --------------------------------------- | ----------------- | 4116| Promise\<string> | Promise对象,返回请求id,可用于[cancelRequest](#cancelrequest12)取消请求。 | 4117 4118**错误码:** 4119 4120接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 4121 4122| 错误码ID | 错误信息 | 4123| -------- | ---------------------------------------- | 4124| 201 | Permission denied | 4125| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 4126| 14000011 | System inner fail. | 4127 4128**示例:** 4129 4130```ts 4131import { dataSharePredicates } from '@kit.ArkData'; 4132class MediaDataHandler implements photoAccessHelper.MediaAssetDataHandler<ArrayBuffer> { 4133 onDataPrepared(data: ArrayBuffer) { 4134 if (data === undefined) { 4135 console.error('Error occurred when preparing data'); 4136 return; 4137 } 4138 console.info('on image data prepared'); 4139 } 4140} 4141 4142async function example() { 4143 console.info('requestImageData'); 4144 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 4145 let fetchOptions: photoAccessHelper.FetchOptions = { 4146 fetchColumns: [], 4147 predicates: predicates 4148 }; 4149 let requestOptions: photoAccessHelper.RequestOptions = { 4150 deliveryMode: photoAccessHelper.DeliveryMode.HIGH_QUALITY_MODE, 4151 } 4152 const handler = new MediaDataHandler(); 4153 4154 phAccessHelper.getAssets(fetchOptions, async (err, fetchResult) => { 4155 console.info('fetchResult success'); 4156 let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 4157 await photoAccessHelper.MediaAssetManager.requestImageData(context, photoAsset, requestOptions, handler); 4158 console.info('requestImageData successfully'); 4159 }); 4160} 4161``` 4162 4163### requestMovingPhoto<sup>12+</sup> 4164 4165static requestMovingPhoto(context: Context, asset: PhotoAsset, requestOptions: RequestOptions, dataHandler: MediaAssetDataHandler<MovingPhoto>): Promise<string> 4166 4167根据不同的策略模式,请求动态照片对象。动态照片对象可用于请求动态照片的资源数据。 4168 4169**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 4170 4171**需要权限**:ohos.permission.READ_IMAGEVIDEO 4172 4173- 对于未申请'ohos.permission.READ_IMAGEVIDEO'权限的应用,可以通过picker的方式调用该接口来请求动态照片对象,详情请参考[开发指南](../../media/medialibrary/photoAccessHelper-photoviewpicker.md#指定uri获取图片或视频资源)。 4174- 对于本应用保存到媒体库的动态照片资源,应用无需额外申请'ohos.permission.READ_IMAGEVIDEO'权限即可访问。 4175 4176**参数:** 4177 4178| 参数名 | 类型 | 必填 | 说明 | 4179| -------- |----------------------------------------------------------------------| ---- | ------------------------- | 4180| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | 是 | 传入Ability实例的Context。 | 4181| asset | [PhotoAsset](#photoasset) | 是 | 待请求的的媒体文件对象。 | 4182| requestOptions | [RequestOptions](#requestoptions11) | 是 | 图片请求策略模式配置项。| 4183| dataHandler | [MediaAssetDataHandler](#mediaassetdatahandler11)<[MovingPhoto](#movingphoto12)> | 是 | 媒体资源处理器,当所请求的图片资源准备完成时会触发回调。| 4184 4185**返回值:** 4186 4187| 类型 | 说明 | 4188| --------------------------------------- | ----------------- | 4189| Promise\<string> | Promise对象,返回请求id,可用于[cancelRequest](#cancelrequest12)取消请求。 | 4190 4191**错误码:** 4192 4193接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 4194 4195| 错误码ID | 错误信息 | 4196| -------- | ---------------------------------------- | 4197| 201 | Permission denied | 4198| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 4199| 14000011 | System inner fail | 4200 4201**示例:** 4202 4203```ts 4204import { dataSharePredicates } from '@kit.ArkData'; 4205 4206class MovingPhotoHandler implements photoAccessHelper.MediaAssetDataHandler<photoAccessHelper.MovingPhoto> { 4207 async onDataPrepared(movingPhoto: photoAccessHelper.MovingPhoto) { 4208 if (movingPhoto === undefined) { 4209 console.error('Error occurred when preparing data'); 4210 return; 4211 } 4212 console.info("moving photo acquired successfully, uri: " + movingPhoto.getUri()); 4213 } 4214} 4215 4216async function example() { 4217 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 4218 predicates.equalTo(photoAccessHelper.PhotoKeys.PHOTO_SUBTYPE, photoAccessHelper.PhotoSubtype.MOVING_PHOTO); 4219 let fetchOptions: photoAccessHelper.FetchOptions = { 4220 fetchColumns: [], 4221 predicates: predicates 4222 }; 4223 // 请确保图库内存在动态照片 4224 let assetResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions); 4225 let asset: photoAccessHelper.PhotoAsset = await assetResult.getFirstObject(); 4226 let requestOptions: photoAccessHelper.RequestOptions = { 4227 deliveryMode: photoAccessHelper.DeliveryMode.FAST_MODE, 4228 } 4229 const handler = new MovingPhotoHandler(); 4230 try { 4231 let requestId: string = await photoAccessHelper.MediaAssetManager.requestMovingPhoto(context, asset, requestOptions, handler); 4232 console.info("moving photo requested successfully, requestId: " + requestId); 4233 } catch (err) { 4234 console.error(`failed to request moving photo, error code is ${err.code}, message is ${err.message}`); 4235 } 4236} 4237 4238``` 4239 4240### requestVideoFile<sup>12+</sup> 4241 4242static requestVideoFile(context: Context, asset: PhotoAsset, requestOptions: RequestOptions, fileUri: string, dataHandler: MediaAssetDataHandler<boolean>): Promise<string> 4243 4244根据不同的策略模式,请求视频资源数据到沙箱路径。 4245 4246**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 4247 4248**需要权限**:ohos.permission.READ_IMAGEVIDEO 4249 4250- 对于未申请'ohos.permission.READ_IMAGEVIDEO'权限的应用,可以通过picker的方式调用该接口来请求视频资源数据到应用沙箱,详情请参考[开发指南](../../media/medialibrary/photoAccessHelper-photoviewpicker.md#指定uri获取图片或视频资源)。 4251- 对于本应用保存到媒体库的视频资源,应用无需额外申请'ohos.permission.READ_IMAGEVIDEO'权限即可访问。 4252 4253**参数:** 4254 4255| 参数名 | 类型 | 必填 | 说明 | 4256| -------- |----------------------------------------------------------------------| ---- | ------------------------- | 4257| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | 是 | 传入Ability实例的Context。| 4258| asset | [PhotoAsset](#photoasset) | 是 | 待请求的的媒体文件对象。 | 4259| requestOptions | [RequestOptions](#requestoptions11) | 是 | 视频请求策略模式配置项。| 4260| fileUri| string | 是 | 目标写入沙箱路径Uri。 | 4261| dataHandler | [MediaAssetDataHandler](#mediaassetdatahandler11)<boolean> | 是 | 媒体资源处理器,当所请求的视频资源写入完成时会触发回调。| 4262 4263**返回值:** 4264 4265| 类型 | 说明 | 4266| --------------------------------------- | ----------------- | 4267| Promise\<string> | Promise对象,返回请求id,可用于[cancelRequest](#cancelrequest12)取消请求。 | 4268 4269**错误码:** 4270 4271接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 4272 4273| 错误码ID | 错误信息 | 4274| -------- | ---------------------------------------- | 4275| 201 | Permission denied | 4276| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 4277| 14000011 | System inner fail. | 4278 4279**示例:** 4280 4281```ts 4282import { dataSharePredicates } from '@kit.ArkData'; 4283class MediaDataHandler implements photoAccessHelper.MediaAssetDataHandler<boolean> { 4284 onDataPrepared(data: boolean) { 4285 console.info('on video request status prepared'); 4286 } 4287} 4288 4289async function example() { 4290 console.info('requestVideoFile'); 4291 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 4292 let fetchOptions: photoAccessHelper.FetchOptions = { 4293 fetchColumns: [], 4294 predicates: predicates 4295 }; 4296 let requestOptions: photoAccessHelper.RequestOptions = { 4297 deliveryMode: photoAccessHelper.DeliveryMode.HIGH_QUALITY_MODE, 4298 } 4299 const handler = new MediaDataHandler(); 4300 let fileUri = 'file://com.example.temptest/data/storage/el2/base/haps/entry/files/test.mp4'; 4301 phAccessHelper.getAssets(fetchOptions, async (err, fetchResult) => { 4302 console.info('fetchResult success'); 4303 let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 4304 await photoAccessHelper.MediaAssetManager.requestVideoFile(context, photoAsset, requestOptions, fileUri, handler); 4305 console.info('requestVideoFile successfully'); 4306 }); 4307} 4308``` 4309 4310### cancelRequest<sup>12+</sup> 4311 4312static cancelRequest(context: Context, requestId: string): Promise\<void> 4313 4314取消尚未触发回调的资产内容请求。 4315 4316**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 4317 4318**需要权限**:ohos.permission.READ_IMAGEVIDEO 4319 4320**参数:** 4321 4322| 参数名 | 类型 | 必填 | 说明 | 4323| -------- |----------------------------------------------------------------------| ---- | ------------------------- | 4324| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | 是 | 传入Ability实例的Context。 | 4325| requestId | string | 是 | 需要取消的请求id。 | 4326 4327**返回值:** 4328 4329| 类型 | 说明 | 4330| --------------------------------------- | ----------------- | 4331| Promise\<void> | Promise对象,返回void。 | 4332 4333**错误码:** 4334 4335接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 4336 4337| 错误码ID | 错误信息 | 4338| -------- | ---------------------------------------- | 4339| 201 | Permission denied | 4340| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 4341| 14000011 | System inner fail | 4342 4343**示例:** 4344 4345```ts 4346import { dataSharePredicates } from '@kit.ArkData'; 4347 4348async function example() { 4349 try { 4350 let requestId: string = 'xxx-xxx'; // 应用需使用requestImage等接口返回的有效requestId 4351 await photoAccessHelper.MediaAssetManager.cancelRequest(context, requestId); 4352 console.info("request cancelled successfully"); 4353 } catch (err) { 4354 console.error(`cancelRequest failed with error: ${err.code}, ${err.message}`); 4355 } 4356} 4357 4358``` 4359 4360### loadMovingPhoto<sup>12+</sup> 4361 4362static loadMovingPhoto(context: Context, imageFileUri: string, videoFileUri: string): Promise\<MovingPhoto> 4363 4364加载应用沙箱的动态照片。 4365 4366**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。 4367 4368**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 4369 4370**参数:** 4371 4372| 参数名 | 类型 | 必填 | 说明 | 4373| -------- |----------------------------------------------------------------------| ---- | ------------------------- | 4374| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | 是 | 传入AbilityContext或者UIExtensionContext的实例。 | 4375| imageFileUri | string | 是 | 应用沙箱动态照片的图片uri。 | 4376| videoFileUri | string | 是 | 应用沙箱动态照片的视频uri。 | 4377 4378**返回值:** 4379 4380| 类型 | 说明 | 4381| --------------------------------------- | ----------------- | 4382| Promise\<MovingPhoto> | Promise对象,返回[MovingPhoto](#movingphoto12)实例。 | 4383 4384**错误码:** 4385 4386接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 4387 4388| 错误码ID | 错误信息 | 4389| -------- | ---------------------------------------- | 4390| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 4391| 14000011 | Internal system error. | 4392 4393**示例:** 4394 4395```ts 4396async function example() { 4397 try { 4398 let imageFileUri: string = 'file://com.example.temptest/data/storage/el2/base/haps/ImageFile.jpg'; // 应用沙箱动态照片的图片uri 4399 let videoFileUri: string = 'file://com.example.temptest/data/storage/el2/base/haps/VideoFile.mp4'; // 应用沙箱动态照片的视频uri 4400 let movingPhoto: photoAccessHelper.MovingPhoto = await photoAccessHelper.MediaAssetManager.loadMovingPhoto(context, imageFileUri, videoFileUri); 4401 } catch (err) { 4402 console.error(`loadMovingPhoto failed with error: ${err.code}, ${err.message}`); 4403 } 4404} 4405 4406``` 4407 4408### quickRequestImage<sup>13+</sup> 4409 4410static quickRequestImage(context: Context, asset: PhotoAsset, requestOptions: RequestOptions, dataHandler: QuickImageDataHandler<image.Picture>): Promise<string> 4411 4412根据不同的策略模式,快速请求图片资源。 4413 4414**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 4415 4416**需要权限**:ohos.permission.READ_IMAGEVIDEO 4417 4418对于未申请'ohos.permission.READ_IMAGEVIDEO'权限的应用,可以通过picker的方式调用该接口来请求图片资源,详情请参考[开发指南](../../media/medialibrary/photoAccessHelper-photoviewpicker.md#指定uri获取图片或视频资源)。 4419 4420**参数:** 4421 4422| 参数名 | 类型 | 必填 | 说明 | 4423|----------------|-----------------------------------------------------------------------------------------------------------| ---- | ------------------------- | 4424| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | 是 | 传入Ability实例的Context。 | 4425| asset | [PhotoAsset](#photoasset) | 是 | 待请求的的媒体文件对象。 | 4426| requestOptions | [RequestOptions](#requestoptions11) | 是 | 图片请求策略模式配置项。| 4427| dataHandler | [QuickImageDataHandler](#quickimagedatahandler13)<[image.Picture](../apis-image-kit/js-apis-image.md#picture13)> | 是 | 媒体资源处理器,当所请求的图片资源准备完成时会触发回调。| 4428 4429**返回值:** 4430 4431| 类型 | 说明 | 4432| --------------------------------------- | ----------------- | 4433| Promise\<string> | Promise对象,返回请求id,可用于[cancelRequest](#cancelrequest12)取消请求。 | 4434 4435**错误码:** 4436 4437接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 4438 4439| 错误码ID | 错误信息 | 4440| -------- | ---------------------------------------- | 4441| 201 | Permission denied | 4442| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 4443| 14000011 | Internal system error. | 4444 4445**示例:** 4446 4447```ts 4448import { photoAccessHelper } from '@kit.MediaLibraryKit'; 4449import { dataSharePredicates } from '@kit.ArkData'; 4450import { image } from '@kit.ImageKit'; 4451 4452class MediaHandler implements photoAccessHelper.QuickImageDataHandler<image.Picture> { 4453 onDataPrepared(data: image.Picture, imageSource: image.ImageSource, map: Map<string, string>) { 4454 console.info('on image data prepared'); 4455 } 4456} 4457 4458async function example() { 4459 console.info('quickRequestImage'); 4460 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 4461 let fetchOptions: photoAccessHelper.FetchOptions = { 4462 fetchColumns: [], 4463 predicates: predicates 4464 }; 4465 let requestOptions: photoAccessHelper.RequestOptions = { 4466 deliveryMode: photoAccessHelper.DeliveryMode.HIGH_QUALITY_MODE, 4467 } 4468 const handler = new MediaHandler(); 4469 let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context); 4470 phAccessHelper.getAssets(fetchOptions, async (err, fetchResult) => { 4471 console.info('fetchResult success'); 4472 let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 4473 await photoAccessHelper.MediaAssetManager.quickRequestImage(context, photoAsset, requestOptions, handler); 4474 console.info('quickRequestImage successfully'); 4475 }); 4476} 4477``` 4478 4479## MediaAssetDataHandler<sup>11+</sup> 4480 4481媒体资源处理器,应用在onDataPrepared方法中可自定义媒体资源处理逻辑。 4482 4483**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 4484 4485### onDataPrepared<sup>11+</sup> 4486 4487onDataPrepared(data: T, map?: Map<string, string>): void 4488 4489媒体资源就绪通知,当所请求的资源准备就绪时系统会回调此方法。如果资源准备出错,则回调的data为undefined。每个资源请求与回调一一对应。 4490T支持ArrayBuffer, [ImageSource](../apis-image-kit/js-apis-image.md#imagesource), [MovingPhoto](#movingphoto12)和boolean四种数据类型。其中,ArrayBuffer表示图片/视频资源数据,[ImageSource](../apis-image-kit/js-apis-image.md#imagesource)表示图片源,[MovingPhoto](#movingphoto12)表示动态照片对象,boolean表示图片/视频资源是否成功写入应用沙箱。 4491 4492map支持返回的信息: 4493| map键名 | 值说明 | 4494|----------|-------| 4495| 'quality' | 图片质量。高质量为'high',低质量为'low'。 | 4496 4497**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 4498 4499**参数:** 4500 4501| 参数名 | 类型 | 必填 | 说明 | 4502|------|---| ---- |-------------------------------------------------------------------------------| 4503| data | T | 是 | 已就绪的图片资源数据。泛型,支持ArrayBuffer, [ImageSource](../apis-image-kit/js-apis-image.md#imagesource), [MovingPhoto](#movingphoto12)和boolean四种数据类型。 | 4504| map<sup>12+</sup> | Map<string, string> | 否 | 用于获取图片资源的额外信息,如图片质量。 | 4505 4506**示例** 4507```ts 4508import { image } from '@kit.ImageKit'; 4509 4510class MediaHandler implements photoAccessHelper.MediaAssetDataHandler<image.ImageSource> { 4511 onDataPrepared = (data: image.ImageSource, map: Map<string, string>) => { 4512 if (data === undefined) { 4513 console.error('Error occurred when preparing data'); 4514 return; 4515 } 4516 // 自定义对ImageSource的处理逻辑 4517 console.info('on image data prepared, photo quality is ' + map['quality']); 4518 } 4519} 4520 4521class MediaDataHandler implements photoAccessHelper.MediaAssetDataHandler<ArrayBuffer> { 4522 onDataPrepared = (data: ArrayBuffer, map: Map<string, string>) => { 4523 if (data === undefined) { 4524 console.error('Error occurred when preparing data'); 4525 return; 4526 } 4527 // 自定义对ArrayBuffer的处理逻辑 4528 console.info('on image data prepared, photo quality is ' + map['quality']); 4529 } 4530} 4531 4532class MovingPhotoHandler implements photoAccessHelper.MediaAssetDataHandler<photoAccessHelper.MovingPhoto> { 4533 onDataPrepared = (data: photoAccessHelper.MovingPhoto, map: Map<string, string>) => { 4534 if (data === undefined) { 4535 console.error('Error occurred when preparing data'); 4536 return; 4537 } 4538 // 自定义对MovingPhoto的处理逻辑 4539 console.info('on image data prepared, photo quality is ' + map['quality']); 4540 } 4541} 4542``` 4543 4544## QuickImageDataHandler<sup>13+</sup> 4545 4546媒体资源处理器,应用在onDataPrepared方法中可自定义媒体资源处理逻辑。 4547 4548**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 4549 4550### onDataPrepared<sup>13+</sup> 4551 4552onDataPrepared(data: T, imageSource: image.ImageSource, map: Map<string, string>): void 4553 4554媒体资源就绪通知,当所请求的图片资源准备就绪时系统会回调此方法。如果资源准备出错,则回调的data为undefined。 4555T支持Picture数据类型。 4556 4557map支持返回的信息: 4558| map键名 | 值说明 | 4559|----------|-------| 4560| 'quality' | 图片质量。高质量为'high',低质量为'low'。 | 4561 4562**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 4563 4564**参数:** 4565 4566| 参数名 | 类型 | 必填 | 说明 | 4567|------|---| ---- |-------------------------------------------------------------------------------| 4568| data | T | 是 | 已就绪的图片资源数据。泛型,支持[Picture](../apis-image-kit/js-apis-image.md#picture13)数据类型。 | 4569| imageSource | image.ImageSource | 是 | 已就绪的图片资源数据。 | 4570| map<sup>13+</sup> | Map<string, string> | 是 | 用于获取图片资源的额外信息,如图片质量。 | 4571 4572**示例** 4573```ts 4574import { image } from '@kit.ImageKit'; 4575 4576class MediaHandler implements photoAccessHelper.QuickImageDataHandler<image.Picture> { 4577 onDataPrepared(data: image.Picture, imageSource: image.ImageSource, map: Map<string, string>) { 4578 console.info('on image data prepared'); 4579 } 4580} 4581``` 4582 4583## MovingPhoto<sup>12+</sup> 4584 4585动态照片对象。 4586 4587**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 4588 4589**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 4590 4591### getUri<sup>12+</sup> 4592 4593getUri(): string 4594 4595获取动态照片的uri。 4596 4597**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 4598 4599**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 4600 4601**返回值:** 4602 4603| 类型 | 说明 | 4604| --------------------------------------- | ----------------- | 4605| string | 动态照片的uri。 | 4606 4607**错误码:** 4608 4609接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 4610 4611| 错误码ID | 错误信息 | 4612| -------- | ---------------------------------------- | 4613| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 4614| 14000011 | System inner fail. | 4615 4616**示例:** 4617 4618```ts 4619import { dataSharePredicates } from '@kit.ArkData'; 4620 4621class MovingPhotoHandler implements photoAccessHelper.MediaAssetDataHandler<photoAccessHelper.MovingPhoto> { 4622 async onDataPrepared(movingPhoto: photoAccessHelper.MovingPhoto) { 4623 if (movingPhoto === undefined) { 4624 console.error('Error occurred when preparing data'); 4625 return; 4626 } 4627 console.info("moving photo acquired successfully, uri: " + movingPhoto.getUri()); 4628 } 4629} 4630 4631async function example() { 4632 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 4633 predicates.equalTo(photoAccessHelper.PhotoKeys.PHOTO_SUBTYPE, photoAccessHelper.PhotoSubtype.MOVING_PHOTO); 4634 let fetchOptions: photoAccessHelper.FetchOptions = { 4635 fetchColumns: [], 4636 predicates: predicates 4637 }; 4638 // 请确保图库内存在动态照片 4639 let assetResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions); 4640 let asset: photoAccessHelper.PhotoAsset = await assetResult.getFirstObject(); 4641 let requestOptions: photoAccessHelper.RequestOptions = { 4642 deliveryMode: photoAccessHelper.DeliveryMode.FAST_MODE, 4643 } 4644 const handler = new MovingPhotoHandler(); 4645 try { 4646 let requestId: string = await photoAccessHelper.MediaAssetManager.requestMovingPhoto(context, asset, requestOptions, handler); 4647 console.info("moving photo requested successfully, requestId: " + requestId); 4648 } catch (err) { 4649 console.error(`failed to request moving photo, error code is ${err.code}, message is ${err.message}`); 4650 } 4651} 4652``` 4653 4654### requestContent<sup>12+</sup> 4655 4656requestContent(imageFileUri: string, videoFileUri: string): Promise\<void> 4657 4658同时请求动态照片的图片内容和视频内容,并写入参数指定的对应的uri中。 4659 4660**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 4661 4662**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 4663 4664**需要权限**:ohos.permission.READ_IMAGEVIDEO 4665 4666- 对于未申请'ohos.permission.READ_IMAGEVIDEO'权限的应用,可以通过picker的方式调用该接口来请求动态照片对象并读取内容,详情请参考[开发指南](../../media/medialibrary/photoAccessHelper-movingphoto.md)。 4667- 对于本应用保存到媒体库的动态照片资源,应用无需额外申请'ohos.permission.READ_IMAGEVIDEO'权限即可访问。 4668 4669**参数:** 4670 4671| 参数名 | 类型 | 必填 | 说明 | 4672| -------- |----------------------------------------------------------------------| ---- | ------------------------- | 4673| imageFileUri | string | 是 | 待写入动态照片图片内容的uri。 | 4674| videoFileUri | string | 是 | 待写入动态照片视频内容的uri。 | 4675 4676**返回值:** 4677 4678| 类型 | 说明 | 4679| --------------------------------------- | ----------------- | 4680| Promise\<void> | Promise对象,返回void。 | 4681 4682**错误码:** 4683 4684接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 4685 4686| 错误码ID | 错误信息 | 4687| -------- | ---------------------------------------- | 4688| 201 | Permission denied | 4689| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 4690| 14000011 | System inner fail | 4691 4692**示例:** 4693 4694```ts 4695import { dataSharePredicates } from '@kit.ArkData'; 4696 4697class MovingPhotoHandler implements photoAccessHelper.MediaAssetDataHandler<photoAccessHelper.MovingPhoto> { 4698 async onDataPrepared(movingPhoto: photoAccessHelper.MovingPhoto) { 4699 if (movingPhoto === undefined) { 4700 console.error('Error occurred when preparing data'); 4701 return; 4702 } 4703 // 应用需要确保待写入的uri是有效的 4704 let imageFileUri: string = "file://com.example.temptest/data/storage/el2/base/haps/ImageFile.jpg"; 4705 let videoFileUri: string = "file://com.example.temptest/data/storage/el2/base/haps/VideoFile.mp4"; 4706 try { 4707 await movingPhoto.requestContent(imageFileUri, videoFileUri); 4708 console.log("moving photo contents retrieved successfully"); 4709 } catch (err) { 4710 console.error(`failed to retrieve contents of moving photo, error code is ${err.code}, message is ${err.message}`); 4711 } 4712 } 4713} 4714 4715async function example() { 4716 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 4717 predicates.equalTo(photoAccessHelper.PhotoKeys.PHOTO_SUBTYPE, photoAccessHelper.PhotoSubtype.MOVING_PHOTO); 4718 let fetchOptions: photoAccessHelper.FetchOptions = { 4719 fetchColumns: [], 4720 predicates: predicates 4721 }; 4722 // 请确保图库内存在动态照片 4723 let assetResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions); 4724 let asset: photoAccessHelper.PhotoAsset = await assetResult.getFirstObject(); 4725 let requestOptions: photoAccessHelper.RequestOptions = { 4726 deliveryMode: photoAccessHelper.DeliveryMode.FAST_MODE, 4727 } 4728 const handler = new MovingPhotoHandler(); 4729 try { 4730 let requestId: string = await photoAccessHelper.MediaAssetManager.requestMovingPhoto(context, asset, requestOptions, handler); 4731 console.info("moving photo requested successfully, requestId: " + requestId); 4732 } catch (err) { 4733 console.error(`failed to request moving photo, error code is ${err.code}, message is ${err.message}`); 4734 } 4735} 4736``` 4737 4738### requestContent<sup>12+</sup> 4739 4740requestContent(resourceType: ResourceType, fileUri: string): Promise\<void> 4741 4742请求指定资源类型的动态照片内容,并写入参数指定的uri中。 4743 4744**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 4745 4746**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 4747 4748**需要权限**:ohos.permission.READ_IMAGEVIDEO 4749 4750- 对于未申请'ohos.permission.READ_IMAGEVIDEO'权限的应用,可以通过picker的方式调用该接口来请求动态照片对象并读取内容,详情请参考[开发指南](../../media/medialibrary/photoAccessHelper-movingphoto.md)。 4751- 对于本应用保存到媒体库的动态照片资源,应用无需额外申请'ohos.permission.READ_IMAGEVIDEO'权限即可访问。 4752 4753**参数:** 4754 4755| 参数名 | 类型 | 必填 | 说明 | 4756| -------- |----------------------------------------------------------------------| ---- | ------------------------- | 4757| resourceType | [ResourceType](#resourcetype11) | 是 | 所请求动态照片内容的资源类型。 | 4758| fileUri | string | 是 |待写入动态照片内容的uri。 | 4759 4760**返回值:** 4761 4762| 类型 | 说明 | 4763| --------------------------------------- | ----------------- | 4764| Promise\<void> | Promise对象,返回void。 | 4765 4766**错误码:** 4767 4768接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 4769 4770| 错误码ID | 错误信息 | 4771| -------- | ---------------------------------------- | 4772| 201 | Permission denied | 4773| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 4774| 14000011 | System inner fail | 4775 4776**示例:** 4777 4778```ts 4779import { dataSharePredicates } from '@kit.ArkData'; 4780 4781class MovingPhotoHandler implements photoAccessHelper.MediaAssetDataHandler<photoAccessHelper.MovingPhoto> { 4782 async onDataPrepared(movingPhoto: photoAccessHelper.MovingPhoto) { 4783 if (movingPhoto === undefined) { 4784 console.error('Error occurred when preparing data'); 4785 return; 4786 } 4787 // 应用需要确保待写入的uri是有效的 4788 let imageFileUri: string = "file://com.example.temptest/data/storage/el2/base/haps/ImageFile.jpg"; 4789 try { 4790 await movingPhoto.requestContent(photoAccessHelper.ResourceType.IMAGE_RESOURCE, imageFileUri); 4791 console.log("moving photo image content retrieved successfully"); 4792 } catch (err) { 4793 console.error(`failed to retrieve image content of moving photo, error code is ${err.code}, message is ${err.message}`); 4794 } 4795 } 4796} 4797 4798async function example() { 4799 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 4800 predicates.equalTo(photoAccessHelper.PhotoKeys.PHOTO_SUBTYPE, photoAccessHelper.PhotoSubtype.MOVING_PHOTO); 4801 let fetchOptions: photoAccessHelper.FetchOptions = { 4802 fetchColumns: [], 4803 predicates: predicates 4804 }; 4805 // 请确保图库内存在动态照片 4806 let assetResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions); 4807 let asset: photoAccessHelper.PhotoAsset = await assetResult.getFirstObject(); 4808 let requestOptions: photoAccessHelper.RequestOptions = { 4809 deliveryMode: photoAccessHelper.DeliveryMode.FAST_MODE, 4810 } 4811 const handler = new MovingPhotoHandler(); 4812 try { 4813 let requestId: string = await photoAccessHelper.MediaAssetManager.requestMovingPhoto(context, asset, requestOptions, handler); 4814 console.info("moving photo requested successfully, requestId: " + requestId); 4815 } catch (err) { 4816 console.error(`failed to request moving photo, error code is ${err.code}, message is ${err.message}`); 4817 } 4818} 4819``` 4820 4821### requestContent<sup>12+</sup> 4822 4823requestContent(resourceType: ResourceType): Promise\<ArrayBuffer> 4824 4825请求指定资源类型的动态照片内容,以ArrayBuffer的形式返回。 4826 4827**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 4828 4829**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 4830 4831**需要权限**:ohos.permission.READ_IMAGEVIDEO 4832 4833- 对于未申请'ohos.permission.READ_IMAGEVIDEO'权限的应用,可以通过picker的方式调用该接口来请求动态照片对象并读取内容,详情请参考[开发指南](../../media/medialibrary/photoAccessHelper-movingphoto.md)。 4834- 对于本应用保存到媒体库的动态照片资源,应用无需额外申请'ohos.permission.READ_IMAGEVIDEO'权限即可访问。 4835 4836**参数:** 4837 4838| 参数名 | 类型 | 必填 | 说明 | 4839| -------- |----------------------------------------------------------------------| ---- | ------------------------- | 4840| resourceType | [ResourceType](#resourcetype11) | 是 | 所请求动态照片内容的资源类型。 | 4841 4842**返回值:** 4843 4844| 类型 | 说明 | 4845| --------------------------------------- | ----------------- | 4846| Promise\<ArrayBuffer> | Promise对象,返回包含所请求文件内容的ArrayBuffer。 | 4847 4848**错误码:** 4849 4850接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 4851 4852| 错误码ID | 错误信息 | 4853| -------- | ---------------------------------------- | 4854| 201 | Permission denied | 4855| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 4856| 14000011 | System inner fail | 4857 4858**示例:** 4859 4860```ts 4861import { dataSharePredicates } from '@kit.ArkData'; 4862 4863class MovingPhotoHandler implements photoAccessHelper.MediaAssetDataHandler<photoAccessHelper.MovingPhoto> { 4864 async onDataPrepared(movingPhoto: photoAccessHelper.MovingPhoto) { 4865 if (movingPhoto === undefined) { 4866 console.error('Error occurred when preparing data'); 4867 return; 4868 } 4869 try { 4870 let buffer: ArrayBuffer = await movingPhoto.requestContent(photoAccessHelper.ResourceType.IMAGE_RESOURCE); 4871 console.log("moving photo image content retrieved successfully, buffer length: " + buffer.byteLength); 4872 } catch (err) { 4873 console.error(`failed to retrieve image content of moving photo, error code is ${err.code}, message is ${err.message}`); 4874 } 4875 } 4876} 4877 4878async function example() { 4879 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 4880 predicates.equalTo(photoAccessHelper.PhotoKeys.PHOTO_SUBTYPE, photoAccessHelper.PhotoSubtype.MOVING_PHOTO); 4881 let fetchOptions: photoAccessHelper.FetchOptions = { 4882 fetchColumns: [], 4883 predicates: predicates 4884 }; 4885 // 请确保图库内存在动态照片 4886 let assetResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions); 4887 let asset: photoAccessHelper.PhotoAsset = await assetResult.getFirstObject(); 4888 let requestOptions: photoAccessHelper.RequestOptions = { 4889 deliveryMode: photoAccessHelper.DeliveryMode.FAST_MODE, 4890 } 4891 const handler = new MovingPhotoHandler(); 4892 try { 4893 let requestId: string = await photoAccessHelper.MediaAssetManager.requestMovingPhoto(context, asset, requestOptions, handler); 4894 console.info("moving photo requested successfully, requestId: " + requestId); 4895 } catch (err) { 4896 console.error(`failed to request moving photo, error code is ${err.code}, message is ${err.message}`); 4897 } 4898} 4899``` 4900 4901## MemberType 4902 4903type MemberType = number | string | boolean 4904 4905PhotoAsset的成员类型。 4906 4907成员类型为下表类型中的并集。 4908 4909**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 4910 4911| 类型 | 说明 | 4912| ---- | ---- | 4913| number | 表示值类型为数字,可取任意值。 | 4914| string | 表示值类型为字符,可取任意值。| 4915| boolean | 表示值类型为布尔类型。 | 4916 4917## PhotoType 4918 4919枚举,媒体文件类型。 4920 4921**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 4922 4923**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 4924 4925| 名称 | 值 | 说明 | 4926| ----- | ---- | ---- | 4927| IMAGE | 1 | 图片。 | 4928| VIDEO | 2 | 视频。 | 4929 4930## PhotoSubtype<sup>12+</sup> 4931 4932枚举,不同[PhotoAsset](#photoasset)的类型。 4933 4934**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 4935 4936**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 4937 4938| 名称 | 值 | 说明 | 4939| ----- | ---- | ---- | 4940| DEFAULT | 0 | 默认照片类型。 | 4941| MOVING_PHOTO | 3 | 动态照片文件类型。 | 4942| BURST | 4 | 连拍照片文件类型。 | 4943 4944## DynamicRangeType<sup>12+</sup> 4945 4946枚举,媒体文件的动态范围类型。 4947 4948**系统能力**: SystemCapability.FileManagement.PhotoAccessHelper.Core 4949 4950| 名称 | 值 | 说明 | 4951| ----- | ---- | ---- | 4952| SDR | 0 | 标准动态范围类型。| 4953| HDR | 1 | 高动态范围类型。 | 4954 4955## AlbumType 4956 4957枚举,相册类型,表示是用户相册还是系统预置相册。 4958 4959**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 4960 4961| 名称 | 值 | 说明 | 4962| ------------------- | ---- | ------------------------- | 4963| USER | 0 | 用户相册。 | 4964| SYSTEM | 1024 | 系统预置相册。 | 4965 4966## AlbumSubtype 4967 4968枚举,相册子类型,表示具体的相册类型。 4969 4970**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 4971 4972| 名称 | 值 | 说明 | 4973| --------------------------------- | ---------- | ------------------------------- | 4974| USER\_GENERIC | 1 | 用户相册。 | 4975| FAVORITE | 1025 | 收藏夹。 | 4976| VIDEO | 1026 | 视频相册。 | 4977| IMAGE<sup>12+</sup> | 1031 | 图片相册。 | 4978| ANY | 2147483647 | 任意相册。 | 4979 4980## PhotoKeys 4981 4982枚举,图片和视频文件关键信息。 4983 4984**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 4985 4986| 名称 | 值 | 说明 | 4987| ------------- | ------------------- | ---------------------------------------------------------- | 4988| URI | 'uri' | 文件uri。<br>注意:查询照片时,该字段仅支持使用[DataSharePredicates.equalTo](../apis-arkdata/js-apis-data-dataSharePredicates.md#equalto10)谓词。 | 4989| PHOTO_TYPE | 'media_type' | 媒体文件类型。 | 4990| DISPLAY_NAME | 'display_name' | 显示名字。 | 4991| SIZE | 'size' | 文件大小(单位:字节)。 | 4992| DATE_ADDED | 'date_added' | 添加日期(添加文件时间距1970年1月1日的秒数值)。 | 4993| DATE_MODIFIED | 'date_modified' | 修改日期(修改文件时间距1970年1月1日的秒数值,修改文件名不会改变此值,当文件内容发生修改时才会更新)。 | 4994| DURATION | 'duration' | 持续时间(单位:毫秒)。 | 4995| WIDTH | 'width' | 图片宽度(单位:像素)。 | 4996| HEIGHT | 'height' | 图片高度(单位:像素)。 | 4997| DATE_TAKEN | 'date_taken' | 拍摄日期(文件拍照时间距1970年1月1日的秒数值)。 | 4998| ORIENTATION | 'orientation' | 文件的旋转角度,单位为度。 | 4999| FAVORITE | 'is_favorite' | 收藏。 | 5000| TITLE | 'title' | 文件标题。 | 5001| DATE_ADDED_MS<sup>12+</sup> | 'date_added_ms' | 添加日期(添加文件时间距1970年1月1日的毫秒数值)。<br>注意:查询照片时,不支持基于该字段排序。 | 5002| DATE_MODIFIED_MS<sup>12+</sup> | 'date_modified_ms' | 修改日期(修改文件时间距1970年1月1日的毫秒数值,修改文件名不会改变此值,当文件内容发生修改时才会更新)。<br>注意:查询照片时,不支持基于该字段排序。 | 5003| PHOTO_SUBTYPE<sup>12+</sup> | 'subtype' | 媒体文件的子类型。 | 5004| DYNAMIC_RANGE_TYPE<sup>12+</sup> | 'dynamic_range_type' | 媒体文件的动态范围类型。 | 5005| COVER_POSITION<sup>12+</sup> | 'cover_position' | 动态照片的封面位置,具体表示封面帧所对应的视频时间戳(单位:微秒)。 | 5006| BURST_KEY<sup>12+</sup> | 'burst_key' | 一组连拍照片的唯一标识:uuid。 | 5007| LCD_SIZE<sup>12+</sup> | 'lcd_size' | LCD图片的宽高,值为width:height拼接而成的字符串。| 5008| THM_SIZE<sup>12+</sup> | 'thm_size' | THUMB图片的宽高,值为width:height拼接而成的字符串。| 5009| DETAIL_TIME<sup>13+</sup> | 'detail_time' | 大图浏览时间,值为拍摄时对应时区的时间的字符串,不会跟随时区变化。| 5010| DATE_TAKEN_MS<sup>13+</sup> | 'date_taken_ms' | 拍摄日期(文件拍照时间距1970年1月1日的毫秒数值)。| 5011 5012## AlbumKeys 5013 5014枚举,相册关键信息。 5015 5016**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 5017 5018| 名称 | 值 | 说明 | 5019| ------------- | ------------------- | ---------------------------------------------------------- | 5020| URI | 'uri' | 相册uri。 | 5021| ALBUM_NAME | 'album_name' | 相册名字。 | 5022 5023## CreateOptions 5024 5025图片或视频的创建选项。 5026 5027title参数规格为: 5028- 不应包含扩展名。 5029- 文件名字符串长度为1~255。 5030- 文件名中不允许出现的非法英文字符,包括:<br> . .. \ / : * ? " ' ` < > | { } [ ] 5031 5032**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 5033 5034**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 5035 5036| 名称 | 类型 | 必填 | 说明 | 5037| ---------------------- | ------------------- | ---- | ------------------------------------------------ | 5038| title | string | 否 | 图片或者视频的标题。 | 5039| subtype<sup>12+</sup> | [PhotoSubtype](#photosubtype12) | 否 | 图片或者视频的文件子类型。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 5040 5041 5042## FetchOptions 5043 5044检索条件。 5045 5046**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 5047 5048| 名称 | 类型 | 可读 | 可写 | 说明 | 5049| ---------------------- | ------------------- | ---- |---- | ------------------------------------------------ | 5050| fetchColumns | Array<string> | 是 | 是 | 检索条件,指定列名查询。<br>对于照片,如果该参数为空,默认查询'uri'、'media_type'、'subtype'和'display_name',使用[get](#get)接口获取当前对象的其他属性时将会报错。示例:fetchColumns: ['uri', 'title']。<br>对于相册,如果该参数为空,默认查询'uri'和'album_name'。 | 5051| predicates | [dataSharePredicates.DataSharePredicates](../apis-arkdata/js-apis-data-dataSharePredicates.md#datasharepredicates) | 是 | 是 | 谓词查询,显示过滤条件。 | 5052 5053## RequestOptions<sup>11+</sup> 5054 5055请求策略。 5056 5057**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 5058 5059| 名称 | 类型 | 只读 | 可选 | 说明 | 5060| ---------------------- |----------------------------| ---- | ---- | ------------------------------------------- | 5061| deliveryMode | [DeliveryMode](#deliverymode11) | 否 | 否 | 请求资源分发模式,可以指定对于该资源的请求策略,可被配置为快速模式,高质量模式,均衡模式三种策略。 | 5062 5063## MediaChangeRequest<sup>11+</sup> 5064 5065媒体变更请求,资产变更请求和相册变更请求的父类型。 5066 5067**注意**:媒体变更请求需要在调用[applyChanges](#applychanges11)后才会提交生效。 5068 5069**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 5070 5071## ResourceType<sup>11+</sup> 5072 5073枚举,写入资源的类型。 5074 5075**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 5076 5077**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 5078 5079| 名称 | 值 | 说明 | 5080| ----- | ---- | ---- | 5081| IMAGE_RESOURCE | 1 | 表示图片资源。 | 5082| VIDEO_RESOURCE | 2 | 表示视频资源。 | 5083 5084## ImageFileType<sup>13+</sup> 5085 5086枚举,图片保存类型。 5087 5088**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 5089 5090| 名称 | 值 | 说明 | 5091| ----- | ---- | ---- | 5092| JPEG | 1 | 表示jpeg图片类型。 | 5093| HEIF | 2 | 表示heif图片类型。 | 5094 5095## ChangeData 5096 5097监听器回调函数的值。 5098 5099**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 5100 5101| 名称 | 类型 | 可读 | 可写 | 说明 | 5102| ------- | --------------------------- | ---- | ---- | ------------------------------------------------------------ | 5103| type | [NotifyType](#notifytype) | 是 | 否 | ChangeData的通知类型。 | 5104| uris | Array<string> | 是 | 否 | 相同[NotifyType](#notifytype)的所有uri,可以是PhotoAsset或Album。 | 5105| extraUris | Array<string> | 是 | 否 | 相册中变动文件的uri数组。 | 5106 5107## NotifyType 5108 5109枚举,通知事件的类型。 5110 5111**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 5112 5113| 名称 | 值 | 说明 | 5114| ------------------------- | ---- | -------------------------------- | 5115| NOTIFY_ADD | 0 | 添加文件集或相册通知的类型。 | 5116| NOTIFY_UPDATE | 1 | 文件集或相册的更新通知类型。 | 5117| NOTIFY_REMOVE | 2 | 删除文件集或相册的通知类型。 | 5118| NOTIFY_ALBUM_ADD_ASSET | 3 | 在相册中添加的文件集的通知类型。 | 5119| NOTIFY_ALBUM_REMOVE_ASSET | 4 | 在相册中删除的文件集的通知类型。 | 5120 5121## DefaultChangeUri 5122 5123枚举,DefaultChangeUri子类型。 5124 5125**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 5126 5127| 名称 | 值 | 说明 | 5128| ----------------- | ----------------------- | ------------------------------------------------------------ | 5129| DEFAULT_PHOTO_URI | 'file://media/Photo' | 默认PhotoAsset的Uri,与forSubUri{true}一起使用,将接收所有PhotoAsset的更改通知。 | 5130| DEFAULT_ALBUM_URI | 'file://media/PhotoAlbum' | 默认相册的Uri,与forSubUri{true}一起使用,将接收所有相册的更改通知。 | 5131 5132## PhotoViewMIMETypes 5133 5134枚举,可选择的媒体文件类型。 5135 5136**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 5137 5138**系统能力:** SystemCapability.FileManagement.PhotoAccessHelper.Core 5139 5140| 名称 | 值 | 说明 | 5141|---------------------------------------| ---- |----------| 5142| IMAGE_TYPE | 'image/*' | 图片类型。 | 5143| VIDEO_TYPE | 'video/*' | 视频类型。 | 5144| IMAGE_VIDEO_TYPE | '\*/*' | 图片和视频类型。 | 5145| MOVING_PHOTO_IMAGE_TYPE<sup>12+</sup> | 'image/movingPhoto' | 动态照片类型。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 5146 5147## RecommendationType<sup>11+</sup> 5148 5149枚举,推荐的图片类型。 5150 5151**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 5152 5153**系统能力:** SystemCapability.FileManagement.PhotoAccessHelper.Core 5154 5155| 名称 | 值 | 说明 | 5156| ----- | ---- | ---- | 5157| QR_OR_BAR_CODE | 1 | 二维码或条码。 | 5158| QR_CODE | 2 | 二维码。 | 5159| BAR_CODE | 3 | 条码。 | 5160| ID_CARD | 4 | 身份证。 | 5161| PROFILE_PICTURE | 5 | 头像。 | 5162| PASSPORT<sup>12+</sup> | 6 | 护照。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 5163| BANK_CARD<sup>12+</sup> | 7 | 银行卡。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 5164| DRIVER_LICENSE<sup>12+</sup> | 8 | 驾驶证。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 5165| DRIVING_LICENSE<sup>12+</sup> | 9 | 行驶证。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 5166| FEATURED_SINGLE_PORTRAIT<sup>12+</sup> | 10 | 推荐人像。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 5167 5168**示例:** 5169 5170```ts 5171import { BusinessError } from '@kit.BasicServicesKit'; 5172async function example() { 5173 try { 5174 let recommendOptions: photoAccessHelper.RecommendationOptions = { 5175 recommendationType: photoAccessHelper.RecommendationType.ID_CARD 5176 } 5177 let options: photoAccessHelper.PhotoSelectOptions = { 5178 MIMEType: photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE, 5179 maxSelectNumber: 1, 5180 recommendationOptions: recommendOptions 5181 } 5182 let photoPicker = new photoAccessHelper.PhotoViewPicker(); 5183 photoPicker.select(options).then((PhotoSelectResult: photoAccessHelper.PhotoSelectResult) => { 5184 console.info('PhotoViewPicker.select successfully, PhotoSelectResult uri: ' + JSON.stringify(PhotoSelectResult)); 5185 }).catch((err: BusinessError) => { 5186 console.error(`PhotoViewPicker.select failed with err: ${err.code}, ${err.message}`); 5187 }); 5188 } catch (error) { 5189 let err: BusinessError = error as BusinessError; 5190 console.error(`PhotoViewPicker failed with err: ${err.code}, ${err.message}`); 5191 } 5192} 5193``` 5194 5195## TextContextInfo<sup>12+</sup> 5196 5197文本信息,用于推荐图片的文本信息。 5198 5199**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 5200 5201**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 5202 5203| 名称 | 类型 | 必填 | 说明 | 5204| ----------------------- | ------------------- | ---- | -------------------------------- | 5205| text | string | 否 | 如果需要根据文本(支持250字以内的简体中文)推荐相应的图片,则配置此参数。 | 5206 5207**示例:** 5208 5209```ts 5210import { BusinessError } from '@kit.BasicServicesKit'; 5211async function example() { 5212 try { 5213 let textInfo: photoAccessHelper.TextContextInfo = { 5214 text: '上海野生动物园的大熊猫' 5215 } 5216 let recommendOptions: photoAccessHelper.RecommendationOptions = { 5217 textContextInfo: textInfo 5218 } 5219 let options: photoAccessHelper.PhotoSelectOptions = { 5220 MIMEType: photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE, 5221 maxSelectNumber: 1, 5222 recommendationOptions: recommendOptions 5223 } 5224 let photoPicker = new photoAccessHelper.PhotoViewPicker(); 5225 photoPicker.select(options).then((PhotoSelectResult: photoAccessHelper.PhotoSelectResult) => { 5226 console.info('PhotoViewPicker.select successfully, PhotoSelectResult uri: ' + JSON.stringify(PhotoSelectResult)); 5227 }).catch((err: BusinessError) => { 5228 console.error(`PhotoViewPicker.select failed with err: ${err.code}, ${err.message}`); 5229 }); 5230 } catch (error) { 5231 let err: BusinessError = error as BusinessError; 5232 console.error(`PhotoViewPicker failed with err: ${err.code}, ${err.message}`); 5233 } 5234} 5235``` 5236 5237## RecommendationOptions<sup>11+</sup> 5238 5239图片推荐选项(基于图片数据分析结果,依赖设备适配)。 5240 5241**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 5242 5243**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 5244 5245| 名称 | 类型 | 必填 | 说明 | 5246| ----------------------- | ------------------- | ---- | -------------------------------- | 5247| recommendationType | [RecommendationType](#recommendationtype11) | 否 | 如果需要根据枚举值推荐相应的图片,则配置此参数。 | 5248| textContextInfo<sup>12+</sup> | [TextContextInfo](#textcontextinfo12) | 否 | 如果需要根据文本信息推荐相应的图片,则配置此参数(如果同时配置了recommendationType,则仅textContextInfo生效)。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 5249 5250## BaseSelectOptions<sup>12+</sup> 5251 5252图库选择选项基类。 5253 5254**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 5255 5256| 名称 | 类型 | 必填 | 说明 | 5257| ----------------------- | ------------------- | ---- | -------------------------------- | 5258| MIMEType<sup>10+</sup> | [PhotoViewMIMETypes](#photoviewmimetypes) | 否 | 可选择的媒体文件类型,若无此参数,则默认为图片和视频类型。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 5259| maxSelectNumber<sup>10+</sup> | number | 否 | 选择媒体文件数量的最大值(最大可设置的值为500,若不设置则默认为50)。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 5260| isPhotoTakingSupported<sup>11+</sup> | boolean | 否 | 是否支持拍照,true表示支持,false表示不支持,默认为true。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 5261| isSearchSupported<sup>11+</sup> | boolean | 否 | 是否支持搜索,true表示支持,false表示不支持,默认为true。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 5262| recommendationOptions<sup>11+</sup> | [RecommendationOptions](#recommendationoptions11) | 否 | 图片推荐相关配置参数。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 5263| preselectedUris<sup>11+</sup> | Array<string> | 否 | 预选择图片的uri数据。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 5264| isPreviewForSingleSelectionSupported<sup>12+</sup> | boolean | 否 | 单选模式下是否需要进大图预览,true表示需要,false表示不需要,默认为true。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 5265 5266## PhotoSelectOptions 5267 5268图库选择选项子类,继承于BaseSelectOptions。 5269 5270**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 5271 5272**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 5273 5274| 名称 | 类型 | 必填 | 说明 | 5275| ----------------------- | ------------------- | ---- | -------------------------------- | 5276| isEditSupported<sup>11+</sup> | boolean | 否 | 是否支持编辑照片,true表示支持,false表示不支持,默认为true。 | 5277| isOriginalSupported<sup>12+</sup> | boolean | 否 | 是否显示选择原图按钮,true表示显示,false表示不显示,默认为false。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 5278| subWindowName<sup>12+</sup> | string | 否 | 子窗窗口名称。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 5279| completeButtonText<sup>14+</sup> | [CompleteButtonText](#completebuttontext14) | 否 | 完成按钮显示的内容。<br>完成按钮指在界面右下方,用户点击表示图片选择已完成的按钮。 <br>**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。 | 5280 5281## PhotoSelectResult 5282 5283返回图库选择后的结果集。 5284 5285**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 5286 5287**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 5288 5289| 名称 | 类型 | 可读 | 可写 | 说明 | 5290| ----------------------- | ------------------- | ---- | ---- | ------------------------------ | 5291| photoUris | Array<string> | 是 | 是 | 返回图库选择后的媒体文件的uri数组,此uri数组只能通过临时授权的方式调用[photoAccessHelper.getAssets接口](#getassets)去使用,具体使用方式参见用户文件uri介绍中的[媒体文件uri的使用方式](../../file-management/user-file-uri-intro.md#媒体文件uri的使用方式)。 | 5292| isOriginalPhoto | boolean | 是 | 是 | 返回图库选择后的媒体文件是否为原图。 | 5293 5294 5295## DeliveryMode<sup>11+</sup> 5296 5297枚举,资源分发模式。 5298 5299**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 5300 5301| 名称 | 值 | 说明 | 5302| ----- | ---- | ---- | 5303| FAST_MODE | 0 | 快速模式。 | 5304| HIGH_QUALITY_MODE | 1 | 高质量模式。 | 5305| BALANCE_MODE | 2 | 均衡模式。 | 5306 5307## PhotoCreationConfig<sup>12+</sup> 5308 5309保存图片/视频到媒体库的配置,包括保存的文件名等。 5310 5311**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 5312 5313**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 5314 5315| 名称 | 类型 | 必填 | 说明 | 5316| ---------------------- | ------------------- | ---- | ------------------------------------------------ | 5317| title | string | 否 | 图片或者视频的标题。| 5318| fileNameExtension | string | 是 | 文件扩展名,例如'jpg'。| 5319| photoType | [PhotoType](#phototype) | 是 | 创建的文件类型,IMAGE或者VIDEO。| 5320| subtype | [PhotoSubtype](#photosubtype12) | 否 | 图片或者视频的文件子类型,DEFAULT或者MOVING_PHOTO。| 5321 5322## CompleteButtonText<sup>14+</sup> 5323 5324配置完成按钮显示内容。 5325 5326**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core 5327 5328| 名称 | 值 | 说明 | 5329| ----- | ---- | ---- | 5330| TEXT_DONE<sup>14+</sup> | 0 | 显示“完成”。 | 5331| TEXT_SEND<sup>14+</sup> | 1 | 显示“发送”。 | 5332| TEXT_ADD<sup>14+</sup> | 2 | 显示“添加”。 | 5333