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