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