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