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