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