• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.multimedia.medialibrary (媒体库管理)
2
3> **说明:**
4> - 该组件从API Version 6开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
5> - 从API Version 9开始废弃。保留至API Version 13版本。
6> - 部分功能变更为系统接口,仅供系统应用使用,请使用[@ohos.filemanagement.userFileManager](js-apis-userFileManager.md)相应接口替代。
7> - 媒体资源选择和保存功能仍开放给普通应用,请使用[@ohos.file.picker](js-apis-file-picker.md)相应接口替代。
8
9## 导入模块
10```js
11import mediaLibrary from '@ohos.multimedia.mediaLibrary';
12```
13
14## mediaLibrary.getMediaLibrary<sup>8+</sup>
15
16getMediaLibrary(context: Context): MediaLibrary
17
18获取媒体库的实例,用于访问和修改用户等个人媒体数据信息(如音频、视频、图片、文档等)。
19
20此接口仅可在Stage模型下使用。
21
22**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
23
24**参数:**
25
26| 参数名  | 类型    | 必填 | 说明                       |
27| ------- | ------- | ---- | -------------------------- |
28| context | Context | 是   | 传入Ability实例的Context。 |
29
30**返回值:**
31
32| 类型                            | 说明    |
33| ----------------------------- | :---- |
34| [MediaLibrary](#medialibrary) | 媒体库实例 |
35
36**示例:(从API Version 9开始)**
37
38```ts
39// 获取mediaLibrary实例,后续用到此实例均采用此处获取的实例
40const context = getContext(this);
41let media = mediaLibrary.getMediaLibrary(context);
42```
43
44**示例:(API Version 8)**
45
46```js
47import featureAbility from '@ohos.ability.featureAbility';
48
49let context = featureAbility.getContext();
50let media = mediaLibrary.getMediaLibrary(context);
51```
52
53## mediaLibrary.getMediaLibrary
54
55getMediaLibrary(): MediaLibrary
56
57获取媒体库的实例,用于访问和修改用户等个人媒体数据信息(如音频、视频、图片、文档等)。
58
59此接口仅可在FA模型下使用。
60
61**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
62
63**返回值:**
64
65| 类型                          | 说明       |
66| ----------------------------- | :--------- |
67| [MediaLibrary](#medialibrary) | 媒体库实例 |
68
69**示例:**
70
71```js
72let media = mediaLibrary.getMediaLibrary();
73```
74
75## MediaLibrary
76
77### getFileAssets<sup>7+</sup>
78
79getFileAssets(options: MediaFetchOptions, callback: AsyncCallback&lt;FetchFileResult&gt;): void
80
81获取文件资源,使用callback方式返回异步结果。
82
83**需要权限**:ohos.permission.READ_MEDIA
84
85**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
86
87**参数:**
88
89| 参数名   | 类型                                                | 必填 | 说明                              |
90| -------- | --------------------------------------------------- | ---- | --------------------------------- |
91| options  | [MediaFetchOptions](#mediafetchoptions7)            | 是   | 文件获取选项                      |
92| callback | AsyncCallback<[FetchFileResult](#fetchfileresult7)> | 是   | 异步获取FetchFileResult之后的回调 |
93
94**示例:**
95
96```js
97async function example() {
98    let fileKeyObj = mediaLibrary.FileKey;
99    let imageType = mediaLibrary.MediaType.IMAGE;
100    // 创建文件获取选项,此处参数为获取image类型的文件资源
101    let imagesFetchOp = {
102        selections: fileKeyObj.MEDIA_TYPE + '= ?',
103        selectionArgs: [imageType.toString()],
104    };
105    // 获取文件资源,使用callback方式返回异步结果
106    media.getFileAssets(imagesFetchOp, async (error, fetchFileResult) => {
107        // 判断获取的文件资源的检索结果集是否为undefined,若为undefined则接口调用失败
108        if (fetchFileResult == undefined) {
109            console.error('get fetchFileResult failed with error: ' + error);
110            return;
111        }
112        // 获取文件检索结果集中的总数
113        const count = fetchFileResult.getCount();
114        // 判断结果集中的数量是否小于0,小于0时表示接口调用失败
115        if (count < 0) {
116            console.error('get count from fetchFileResult failed, count: ' + count);
117            return;
118        }
119        // 判断结果集中的数量是否等于0,等于0时表示接口调用成功,但是检索结果集为空,请检查文件获取选项参数配置是否有误和设备中是否存在相应文件
120        if (count == 0) {
121            console.info('The count of fetchFileResult is zero');
122            return;
123        }
124        console.info('Get fetchFileResult successfully, count: ' + count);
125        // 获取文件检索结果集中的第一个资源,使用callback方式返回异步结果,文件数量较多时请使用getAllObject接口
126        fetchFileResult.getFirstObject(async (error, fileAsset) => {
127            // 检查获取的第一个资源是否为undefined,若为undefined则接口调用失败
128            if (fileAsset == undefined) {
129                console.error('get first object failed with error: ' + error);
130                return;
131            }
132            console.info('fileAsset.displayName ' + '0 : ' + fileAsset.displayName);
133            // 调用 getNextObject 接口获取下一个资源,直到最后一个
134            for (let i = 1; i < count; i++) {
135                let fileAsset = await fetchFileResult.getNextObject();
136                console.info('fileAsset.displayName ' + i + ': ' + fileAsset.displayName);
137            }
138            // 释放FetchFileResult实例并使其失效。无法调用其他方法
139            fetchFileResult.close();
140        });
141    });
142}
143```
144
145### getFileAssets<sup>7+</sup>
146
147getFileAssets(options: MediaFetchOptions): Promise&lt;FetchFileResult&gt;
148
149获取文件资源,使用Promise方式返回结果。
150
151**需要权限**:ohos.permission.READ_MEDIA
152
153**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
154
155**参数:**
156
157| 参数名  | 类型                                     | 必填 | 说明         |
158| ------- | ---------------------------------------- | ---- | ------------ |
159| options | [MediaFetchOptions](#mediafetchoptions7) | 是   | 文件检索选项 |
160
161**返回值**
162
163| 类型                                 | 说明           |
164| ------------------------------------ | -------------- |
165| [FetchFileResult](#fetchfileresult7) | 文件数据结果集 |
166
167**示例:**
168
169```js
170async function example() {
171    let fileKeyObj = mediaLibrary.FileKey;
172    let imageType = mediaLibrary.MediaType.IMAGE;
173    // 创建文件获取选项,此处参数为获取image类型的文件资源
174    let imagesFetchOp = {
175        selections: fileKeyObj.MEDIA_TYPE + '= ?',
176        selectionArgs: [imageType.toString()],
177    };
178    // 获取文件资源,使用Promise方式返回结果
179    media.getFileAssets(imagesFetchOp).then(async (fetchFileResult) => {
180        // 获取文件检索结果集中的总数
181        const count = fetchFileResult.getCount();
182        // 判断结果集中的数量是否小于0,小于0时表示接口调用失败
183        if (count < 0) {
184            console.error('get count from fetchFileResult failed, count: ' + count);
185            return;
186        }
187        // 判断结果集中的数量是否等于0,等于0时表示接口调用成功,但是检索结果集为空,请检查文件获取选项参数配置是否有误和设备中是否存在相应文件
188        if (count == 0) {
189            console.info('The count of fetchFileResult is zero');
190            return;
191        }
192        console.info('Get fetchFileResult successfully, count: ' + count);
193        // 获取文件检索结果集中的第一个资源,使用Promise方式返回异步结果,文件数量较多时请使用getAllObject接口
194        fetchFileResult.getFirstObject().then(async (fileAsset) => {
195            console.info('fileAsset.displayName ' + '0 : ' + fileAsset.displayName);
196            // 调用 getNextObject 接口获取下一个资源,直到最后一个
197            for (let i = 1; i < count; i++) {
198                let fileAsset = await fetchFileResult.getNextObject();
199                console.info('fileAsset.displayName ' + i + ': ' + fileAsset.displayName);
200            }
201            // 释放FetchFileResult实例并使其失效。无法调用其他方法
202            fetchFileResult.close();
203        }).catch((error) => {
204            // 调用getFirstObject接口失败
205            console.error('get first object failed with error: ' + error);
206        });
207    }).catch((error) => {
208        // 调用getFileAssets接口失败
209        console.error('get file assets failed with error: ' + error);
210    });
211}
212```
213
214### on<sup>8+</sup>
215
216on(type: 'deviceChange'&#124;'albumChange'&#124;'imageChange'&#124;'audioChange'&#124;'videoChange'&#124;'fileChange'&#124;'remoteFileChange', callback: Callback&lt;void&gt;): void
217
218打开媒体库变更通知,使用callback方式返回异步结果。
219
220**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
221
222**参数:**
223
224| 参数名      | 类型                   | 必填   | 说明                                       |
225| -------- | -------------------- | ---- | ---------------------------------------- |
226| type     | 'deviceChange'&#124;<br/>'albumChange'&#124;<br/>'imageChange'&#124;<br/>'audioChange'&#124;<br/>'videoChange'&#124;<br/>'fileChange'&#124;<br/>'remoteFileChange'               | 是    | 媒体类型 <br/>'deviceChange':&nbsp;注册设备变更 <br/>'albumChange':&nbsp;相册变更<br/>'imageChange':&nbsp;图片文件变更<br/>'audioChange': &nbsp;音频文件变更<br/>'videoChange':  &nbsp;视频文件变更<br/>'fileChange':     &nbsp;文件变更<br/>'remoteFileChange':&nbsp;注册设备上文件变更 |
227| callback | Callback&lt;void&gt; | 是    | 回调返回空                                    |
228
229**示例:**
230
231```js
232media.on('imageChange', () => {
233    // image file had changed, do something
234})
235```
236### off<sup>8+</sup>
237
238off(type: 'deviceChange'&#124;'albumChange'&#124;'imageChange'&#124;'audioChange'&#124;'videoChange'&#124;'fileChange'&#124;'remoteFileChange', callback?: Callback&lt;void&gt;): void
239
240关闭媒体库变更通知,使用callback方式返回异步结果。
241
242**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
243
244**参数:**
245
246| 参数名      | 类型                   | 必填   | 说明                                       |
247| -------- | -------------------- | ---- | ---------------------------------------- |
248| type     | 'deviceChange'&#124;<br/>'albumChange'&#124;<br/>'imageChange'&#124;<br/>'audioChange'&#124;<br/>'videoChange'&#124;<br/>'fileChange'&#124;<br/>'remoteFileChange'               | 是    | 媒体类型 <br/>'deviceChange':&nbsp;注册设备变更 <br/>'albumChange':&nbsp;相册变更<br/>'imageChange':&nbsp;图片文件变更<br/>'audioChange': &nbsp;音频文件变更<br/>'videoChange':  &nbsp;视频文件变更<br/>'fileChange':     &nbsp;文件变更<br/>'remoteFileChange':&nbsp;注册设备上文件变更 |
249| callback | Callback&lt;void&gt; | 否    | 回调返回空                                    |
250
251**示例:**
252
253```js
254media.off('imageChange', () => {
255    // stop listening successfully
256})
257```
258
259### createAsset<sup>8+</sup>
260
261createAsset(mediaType: MediaType, displayName: string, relativePath: string, callback: AsyncCallback&lt;FileAsset&gt;): void
262
263创建媒体资源,使用callback方式返回结果。
264
265**需要权限**:ohos.permission.READ_MEDIA, ohos.permission.WRITE_MEDIA
266
267**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
268
269**参数:**
270
271| 参数名       | 类型                                    | 必填 | 说明                                                         |
272| ------------ | --------------------------------------- | ---- | ------------------------------------------------------------ |
273| mediaType    | [MediaType](#mediatype8)                | 是   | 媒体类型                                                     |
274| displayName  | string                                  | 是   | 展示文件名                                                   |
275| relativePath | string                                  | 是   | 文件保存路径,可以通过[getPublicDirectory](#getpublicdirectory8)获取不同类型文件的保存路径 |
276| callback     | AsyncCallback<[FileAsset](#fileasset7)> | 是   | 异步获取媒体数据FileAsset之后的回调                          |
277
278**示例:**
279
280```js
281async function example() {
282    // 使用Callback方式创建Image类型文件
283    let mediaType = mediaLibrary.MediaType.IMAGE;
284    let DIR_IMAGE = mediaLibrary.DirectoryType.DIR_IMAGE;
285    const path = await media.getPublicDirectory(DIR_IMAGE);
286    media.createAsset(mediaType, 'imageCallBack.jpg', path + 'myPicture/', (error, fileAsset) => {
287        if (fileAsset != undefined) {
288            console.info('createAsset successfully, message');
289        } else {
290            console.error('createAsset failed with error: ' + error);
291        }
292    });
293}
294```
295
296### createAsset<sup>8+</sup>
297
298createAsset(mediaType: MediaType, displayName: string, relativePath: string): Promise&lt;FileAsset&gt;
299
300创建媒体资源,使用Promise方式返回结果。
301
302**需要权限**:ohos.permission.READ_MEDIA, ohos.permission.WRITE_MEDIA
303
304**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
305
306**参数:**
307
308| 参数名       | 类型                     | 必填 | 说明                                                         |
309| ------------ | ------------------------ | ---- | ------------------------------------------------------------ |
310| mediaType    | [MediaType](#mediatype8) | 是   | 媒体类型                                                     |
311| displayName  | string                   | 是   | 展示文件名                                                   |
312| relativePath | string                   | 是   | 相对路径,可以通过getPublicDirectory获取不同类型媒体文件的一层目录的relative path |
313
314**返回值**
315
316| 类型                     | 说明              |
317| ------------------------ | ----------------- |
318| [FileAsset](#fileasset7) | 媒体数据FileAsset |
319
320**示例:**
321
322```js
323async function example() {
324    // 使用Promise方式创建Image类型文件
325    let mediaType = mediaLibrary.MediaType.IMAGE;
326    let DIR_IMAGE = mediaLibrary.DirectoryType.DIR_IMAGE;
327    const path = await media.getPublicDirectory(DIR_IMAGE);
328    media.createAsset(mediaType, 'imagePromise.jpg', path + 'myPicture/').then((fileAsset) => {
329        console.info('createAsset successfully, message = ' + JSON.stringify(fileAsset));
330    }).catch((error) => {
331        console.error('createAsset failed with error: ' + error);
332    });
333}
334```
335
336### deleteAsset<sup>8+</sup>
337
338deleteAsset(uri: string): Promise\<void>
339
340删除媒体文件资源
341
342**系统接口**:此接口为系统接口。
343
344**需要权限**:ohos.permission.READ_MEDIAohos.permission.WRITE_MEDIA
345
346**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
347
348**参数:**
349
350| 参数名      | 类型                           | 必填   | 说明              |
351| -------- | ---------------------------- | ---- | --------------- |
352| uri | string | 是    | 需要删除的媒体文件资源的uri |
353
354**返回值:**
355| 类型                  | 说明                   |
356| ------------------- | -------------------- |
357| Promise&lt;void&gt; | Promise回调返回删除的结果。 |
358
359**示例:**
360
361```js
362async function example() {
363    let fileKeyObj = mediaLibrary.FileKey;
364    let fileType = mediaLibrary.MediaType.FILE;
365    let option = {
366        selections: fileKeyObj.MEDIA_TYPE + '= ?',
367        selectionArgs: [fileType.toString()],
368    };
369    const fetchFileResult = await media.getFileAssets(option);
370    let asset = await fetchFileResult.getFirstObject();
371    if (asset == undefined) {
372        console.error('asset not exist');
373        return;
374    }
375    media.deleteAsset(asset.uri).then(() => {
376        console.info('deleteAsset successfully');
377    }).catch((error) => {
378        console.error('deleteAsset failed with error: ' + error);
379    });
380    fetchFileResult.close();
381}
382```
383
384### deleteAsset<sup>8+</sup>
385deleteAsset(uri: string, callback: AsyncCallback\<void>): void
386
387删除媒体文件资源
388
389**系统接口**:此接口为系统接口。
390
391**需要权限**:ohos.permission.READ_MEDIAohos.permission.WRITE_MEDIA
392
393**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
394
395**参数:**
396
397| 参数名      | 类型                           | 必填   | 说明              |
398| -------- | ---------------------------- | ---- | --------------- |
399| uri | string | 是    | 需要删除的媒体文件资源的uri。 |
400|callback |AsyncCallback\<void>| 是  |回调函数,用于获取删除的结果。|
401
402**示例:**
403
404```js
405async function example() {
406    let fileKeyObj = mediaLibrary.FileKey;
407    let fileType = mediaLibrary.MediaType.FILE;
408    let option = {
409        selections: fileKeyObj.MEDIA_TYPE + '= ?',
410        selectionArgs: [fileType.toString()],
411    };
412    const fetchFileResult = await media.getFileAssets(option);
413    let asset = await fetchFileResult.getFirstObject();
414    if (asset == undefined) {
415        console.error('asset not exist');
416        return;
417    }
418    media.deleteAsset(asset.uri, (error) => {
419        if (error != undefined) {
420            console.error('deleteAsset failed with error: ' + error);
421        } else {
422            console.info('deleteAsset successfully');
423        }
424    });
425    fetchFileResult.close();
426}
427```
428
429### getPublicDirectory<sup>8+</sup>
430
431getPublicDirectory(type: DirectoryType, callback: AsyncCallback&lt;string&gt;): void
432
433获取公共目录路径,使用callback方式返回结果。
434
435**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
436
437**参数:**
438
439| 参数名   | 类型                             | 必填 | 说明                      |
440| -------- | -------------------------------- | ---- | ------------------------- |
441| type     | [DirectoryType](#directorytype8) | 是   | 公共目录类型              |
442| callback | AsyncCallback&lt;string&gt;      | 是   | callback 返回公共目录路径 |
443
444**示例:**
445
446```js
447let DIR_CAMERA = mediaLibrary.DirectoryType.DIR_CAMERA;
448media.getPublicDirectory(DIR_CAMERA, (error, dicResult) => {
449    if (dicResult == 'Camera/') {
450        console.info('getPublicDirectory DIR_CAMERA successfully');
451    } else {
452        console.error('getPublicDirectory DIR_CAMERA failed with error: ' + error);
453    }
454});
455```
456
457### getPublicDirectory<sup>8+</sup>
458
459getPublicDirectory(type: DirectoryType): Promise&lt;string&gt;
460
461获取公共目录路径,使用Promise方式返回结果。
462
463**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
464
465**参数:**
466
467| 参数名 | 类型                             | 必填 | 说明         |
468| ------ | -------------------------------- | ---- | ------------ |
469| type   | [DirectoryType](#directorytype8) | 是   | 公共目录类型 |
470
471**返回值:**
472
473| 类型             | 说明             |
474| ---------------- | ---------------- |
475| Promise\<string> | 返回公共目录路径 |
476
477**示例:**
478
479```js
480async function example() {
481    let DIR_CAMERA = mediaLibrary.DirectoryType.DIR_CAMERA;
482    media.getPublicDirectory(DIR_CAMERA).then((dicResult) => {
483        if (dicResult == 'Camera/') {
484            console.info('getPublicDirectory DIR_CAMERA successfully');
485        } else {
486            console.error('getPublicDirectory DIR_CAMERA failed');
487        }
488    }).catch((error) => {
489        console.error('getPublicDirectory failed with error: ' + error);
490    });
491}
492```
493
494### getAlbums<sup>7+</sup>
495
496getAlbums(options: MediaFetchOptions, callback: AsyncCallback&lt;Array&lt;Album&gt;&gt;): void
497
498获取相册列表,使用callback 方式返回结果。
499
500**需要权限**:ohos.permission.READ_MEDIA
501
502**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
503
504**参数**
505
506| 参数名   | 类型                                         | 必填 | 说明                        |
507| -------- | -------------------------------------------- | ---- | --------------------------- |
508| options  | [MediaFetchOptions](#mediafetchoptions7)     | 是   | 相册获取条件                |
509| callback | AsyncCallback&lt;Array<[Album](#album7)>&gt; | 是   | 异步获取Album列表之后的回调 |
510
511**示例:**
512
513```js
514async function example() {
515   // 获取相册需要先预置相册和资源,示例代码为预置的新建相册1。
516  let AlbumNoArgsfetchOp = {
517    selections: mediaLibrary.FileKey.ALBUM_NAME + '= ?',
518    selectionArgs: ['新建相册1'],
519  };
520  media.getAlbums(AlbumNoArgsfetchOp, (error, albumList) => {
521    if (albumList != undefined) {
522      console.info('getAlbums successfully: ' + JSON.stringify(albumList));
523    } else {
524      console.error('getAlbums failed with error: ' + error);
525    }
526  })
527}
528```
529
530### getAlbums<sup>7+</sup>
531
532getAlbums(options: MediaFetchOptions): Promise&lt;Array&lt;Album&gt;&gt;
533
534获取相册列表,使用 promise 方式返回结果。
535
536**需要权限**:ohos.permission.READ_MEDIA
537
538**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
539
540**参数:**
541
542| 参数名  | 类型                                     | 必填 | 说明         |
543| ------- | ---------------------------------------- | ---- | ------------ |
544| options | [MediaFetchOptions](#mediafetchoptions7) | 是   | 相册获取条件 |
545
546**返回值:**
547
548| 类型                             | 说明          |
549| -------------------------------- | ------------- |
550| Promise<Array<[Album](#album7)>> | 返回Album列表 |
551
552**示例:**
553
554```js
555async function example() {
556   // 获取相册需要先预置相册和资源,示例代码为预置的新建相册1。
557  let AlbumNoArgsfetchOp = {
558    selections: mediaLibrary.FileKey.ALBUM_NAME + '= ?',
559    selectionArgs: ['新建相册1'],
560  };
561  media.getAlbums(AlbumNoArgsfetchOp).then((albumList) => {
562    console.info('getAlbums successfully: ' + JSON.stringify(albumList));
563  }).catch((error) => {
564    console.error('getAlbums failed with error: ' + error);
565  });
566}
567```
568
569### release<sup>8+</sup>
570
571release(callback: AsyncCallback&lt;void&gt;): void
572
573释放MediaLibrary实例。
574当后续不需要使用MediaLibrary实例中的方法时调用。
575
576**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
577
578**参数:**
579
580| 参数名      | 类型                        | 必填   | 说明         |
581| -------- | ------------------------- | ---- | ---------- |
582| callback | AsyncCallback&lt;void&gt; | 是    | 无返回值 |
583
584**示例:**
585
586```js
587media.release(() => {
588    // do something
589});
590```
591
592### release<sup>8+</sup>
593
594release(): Promise&lt;void&gt;
595
596释放MediaLibrary实例。
597当后续不需要使用MediaLibrary实例中的方法时调用。
598
599**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
600
601**返回值:**
602
603| 类型                  | 说明                   |
604| ------------------- | -------------------- |
605| Promise&lt;void&gt; | Promise实例,用于获取异步返回结果 |
606
607**示例:**
608
609```js
610media.release()
611```
612
613### storeMediaAsset
614
615storeMediaAsset(option: MediaAssetOption, callback: AsyncCallback&lt;string&gt;): void
616
617保存媒体资源,以异步方法获取保存成功的URI,使用callback形式返回结果。
618
619> **说明**:此接口为API Version 6开始支持,只支持FA模型使用。
620
621**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
622
623**参数:**
624
625| 参数名      | 类型                                    | 必填   | 说明                      |
626| -------- | ------------------------------------- | ---- | ----------------------- |
627| option   | [MediaAssetOption](#mediaassetoption) | 是    | 媒体资源选项。                 |
628| callback | AsyncCallback&lt;string&gt;           | 是    | 媒体资源保存回调,返回保存成功后得到的URI。 |
629
630**示例:**
631
632```js
633let option = {
634    src : '/data/storage/el2/base/haps/entry/image.png',
635    mimeType : 'image/*',
636    relativePath : 'Pictures/'
637};
638mediaLibrary.getMediaLibrary().storeMediaAsset(option, (error, value) => {
639    if (error) {
640        console.error('storeMediaAsset failed with error: ' + error);
641        return;
642    }
643    console.info('Media resources stored. ');
644    // Obtain the URI that stores media resources.
645});
646```
647
648
649### storeMediaAsset
650
651storeMediaAsset(option: MediaAssetOption): Promise&lt;string&gt;
652
653保存媒体资源,以异步方法获取保存成功的URI,使用Promise形式返回结果。
654
655> **说明**:此接口为API Version 6开始支持,只支持FA模型使用。
656
657**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
658
659**参数:**
660
661| 参数名    | 类型                                    | 必填   | 说明      |
662| ------ | ------------------------------------- | ---- | ------- |
663| option | [MediaAssetOption](#mediaassetoption) | 是    | 媒体资源选项。 |
664
665**返回值:**
666
667| 类型                    | 说明                           |
668| --------------------- | ---------------------------- |
669| Promise&lt;string&gt; | Promise实例,用于异步获取保存成功后得到的URI。 |
670
671**示例:**
672
673```js
674let option = {
675    src : '/data/storage/el2/base/haps/entry/image.png',
676    mimeType : 'image/*',
677    relativePath : 'Pictures/'
678};
679mediaLibrary.getMediaLibrary().storeMediaAsset(option).then((value) => {
680    console.info('Media resources stored.');
681    // Obtain the URI that stores media resources.
682}).catch((error) => {
683    console.error('storeMediaAsset failed with error: ' + error);
684});
685```
686
687
688### startImagePreview
689
690startImagePreview(images: Array&lt;string&gt;, index: number, callback: AsyncCallback&lt;void&gt;): void
691
692启动图片预览界面并限定预览开始显示的图片。可以预览指定序号的单张本地图片(datashare://),也可以预览列表中的所有网络图片(https://)。使用callback方式进行异步回调。
693
694> **说明**:
695> 此接口为API Version 6开始支持,只支持FA模型使用。
696> 建议使用[Image组件](../arkui-ts/ts-basic-components-image.md)替代。<br/>Image组件,可用于本地图片和网络图片的渲染展示。
697
698**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
699
700**参数:**
701
702| 参数名      | 类型                        | 必填   | 说明                                       |
703| -------- | ------------------------- | ---- | ---------------------------------------- |
704| images   | Array&lt;string&gt;       | 是    | 预览的图片URI('https://','datashare://')列表。 |
705| index    | number                    | 是    | 开始显示的图片序号。                               |
706| callback | AsyncCallback&lt;void&gt; | 是    | 图片预览回调,失败时返回错误信息。                        |
707
708**示例:**
709
710```js
711let images = [
712    'datashare:///media/xxxx/2',
713    'datashare:///media/xxxx/3'
714];
715/* 网络图片使用方式
716let images = [
717    'https://media.xxxx.com/image1.jpg',
718    'https://media.xxxx.com/image2.jpg'
719];
720*/
721let index = 1;
722mediaLibrary.getMediaLibrary().startImagePreview(images, index, (error) => {
723    if (error) {
724        console.error('startImagePreview failed with error: ' + error);
725        return;
726    }
727    console.info('Succeeded in previewing the images.');
728});
729```
730
731
732### startImagePreview
733
734startImagePreview(images: Array&lt;string&gt;, callback: AsyncCallback&lt;void&gt;): void
735
736启动图片预览界面,可以预览列表中首张本地图片(datashare://),也可以预览列表中的所有网络图片(https://)。使用callback方式进行异步回调。
737
738> **说明**:
739> 此接口为API Version 6开始支持,只支持FA模型使用。
740> 建议使用[Image组件](../arkui-ts/ts-basic-components-image.md)替代。<br/>Image组件,可用于本地图片和网络图片的渲染展示。
741
742**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
743
744**参数:**
745
746| 参数名      | 类型                        | 必填   | 说明                                       |
747| -------- | ------------------------- | ---- | ---------------------------------------- |
748| images   | Array&lt;string&gt;       | 是    | 预览的图片URI('https://','datashare://')列表。 |
749| callback | AsyncCallback&lt;void&gt; | 是    | 图片预览回调,失败时返回错误信息。                        |
750
751**示例:**
752
753```js
754let images = [
755    'datashare:///media/xxxx/2',
756    'datashare:///media/xxxx/3'
757];
758/* 网络图片使用方式
759let images = [
760    'https://media.xxxx.com/image1.jpg',
761    'https://media.xxxx.com/image2.jpg'
762];
763*/
764mediaLibrary.getMediaLibrary().startImagePreview(images, (error) => {
765    if (error) {
766        console.error('startImagePreview failed with error: ' + error);
767        return;
768    }
769    console.info('Succeeded in previewing the images.');
770});
771```
772
773
774### startImagePreview
775
776startImagePreview(images: Array&lt;string&gt;, index?: number): Promise&lt;void&gt;
777
778启动图片预览界面并限定预览开始显示的图片。可以预览指定序号的单张本地图片(datashare://),也可以预览列表中的所有网络图片(https://)。使用Promise方式进行异步回调。
779
780> **说明**:
781> 此接口为API Version 6开始支持,只支持FA模型使用。
782> 建议使用[Image组件](../arkui-ts/ts-basic-components-image.md)替代。<br/>Image组件,可用于本地图片和网络图片的渲染展示。
783
784**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
785
786**参数:**
787
788| 参数名    | 类型                  | 必填   | 说明                                       |
789| ------ | ------------------- | ---- | ---------------------------------------- |
790| images | Array&lt;string&gt; | 是    | 预览的图片URI('https://','datashare://')列表。 |
791| index  | number              | 否    | 开始显示的图片序号,不选择时默认为0。                      |
792
793**返回值:**
794
795| 类型                  | 说明                              |
796| ------------------- | ------------------------------- |
797| Promise&lt;void&gt; | Promise实例,用于异步获取预览结果,失败时返回错误信息。 |
798
799**示例:**
800
801```js
802let images = [
803    'datashare:///media/xxxx/2',
804    'datashare:///media/xxxx/3'
805];
806/* 网络图片使用方式
807let images = [
808    'https://media.xxxx.com/image1.jpg',
809    'https://media.xxxx.com/image2.jpg'
810];
811*/
812let index = 1;
813mediaLibrary.getMediaLibrary().startImagePreview(images, index).then(() => {
814    console.info('Succeeded in previewing the images.');
815}).catch((error) => {
816    console.error('startImagePreview failed with error: ' + error);
817});
818```
819
820
821### startMediaSelect
822
823startMediaSelect(option: MediaSelectOption, callback: AsyncCallback&lt;Array&lt;string&gt;&gt;): void
824
825启动媒体选择界面,以异步方法获取选择的媒体URI列表,使用callback形式返回结果。
826
827> **说明**:
828> 此接口为API Version 6开始支持,只支持FA模型使用。
829> 建议使用系统应用图库替代。图库是系统内置的可视资源访问应用,提供图片和视频的管理、浏览等功能,使用方法请参考[OpenHarmony/applications_photos](https://gitee.com/openharmony/applications_photos#4-%E5%85%B8%E5%9E%8B%E6%8E%A5%E5%8F%A3%E7%9A%84%E4%BD%BF%E7%94%A8)830
831**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
832
833**参数:**
834
835| 参数名      | 类型                                       | 必填   | 说明                                   |
836| -------- | ---------------------------------------- | ---- | ------------------------------------ |
837| option   | [MediaSelectOption](#mediaselectoption)  | 是    | 媒体选择选项。                              |
838| callback | AsyncCallback&lt;Array&lt;string&gt;&gt; | 是    | 媒体选择回调,返回选择的媒体URI(datashare://)列表。 |
839
840**示例:**
841
842```js
843let option : mediaLibrary.MediaSelectOption = {
844    type : 'media',
845    count : 2
846};
847mediaLibrary.getMediaLibrary().startMediaSelect(option, (error, value) => {
848    if (error) {
849        console.error('startMediaSelect failed with error: ' + error);
850        return;
851    }
852    console.info('Media resources selected.');
853    // Obtain the media selection value.
854});
855```
856
857
858### startMediaSelect
859
860startMediaSelect(option: MediaSelectOption): Promise&lt;Array&lt;string&gt;&gt;
861
862启动媒体选择界面,以异步方法获取选择的媒体URI列表,使用Promise形式返回结果。
863
864> **说明**:
865> 此接口为API Version 6开始支持,只支持FA模型使用。
866> 建议使用系统应用图库替代。图库是系统内置的可视资源访问应用,提供图片和视频的管理、浏览等功能,使用方法请参考[OpenHarmony/applications_photos](https://gitee.com/openharmony/applications_photos#4-%E5%85%B8%E5%9E%8B%E6%8E%A5%E5%8F%A3%E7%9A%84%E4%BD%BF%E7%94%A8)867
868**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
869
870**参数:**
871
872| 参数名    | 类型                                      | 必填   | 说明      |
873| ------ | --------------------------------------- | ---- | ------- |
874| option | [MediaSelectOption](#mediaselectoption) | 是    | 媒体选择选项。 |
875
876**返回值:**
877
878| 类型                                 | 说明                                       |
879| ---------------------------------- | ---------------------------------------- |
880| Promise&lt;Array&lt;string&gt;&gt; | Promise实例,用于异步获取选择的媒体URI(datashare://)列表。 |
881
882**示例:**
883
884```js
885let option : mediaLibrary.MediaSelectOption = {
886    type : 'media',
887    count : 2
888};
889mediaLibrary.getMediaLibrary().startMediaSelect(option).then((value) => {
890    console.info('Media resources selected.');
891    // Obtain the media selection value.
892}).catch((error) => {
893    console.error('startMediaSelect failed with error: ' + error);
894});
895
896```
897### getActivePeers<sup>8+</sup>
898
899getActivePeers(): Promise\<Array\<PeerInfo>>;
900
901获取在线对端设备的信息,使用Promise方式返回异步结果
902
903**系统接口**:此接口为系统接口。
904
905**需要权限**:ohos.permission.READ_MEDIA
906
907**系统能力**:SystemCapability.Multimedia.MediaLibrary.DistributedCore
908
909**返回值:**
910
911| 类型                  | 说明                   |
912| ------------------- | -------------------- |
913|  Promise\<Array\<[PeerInfo](#peerinfo8)>> | 返回获取的所有在线对端设备的PeerInfo |
914
915**示例:**
916
917```js
918async function example() {
919    media.getActivePeers().then((devicesInfo) => {
920        if (devicesInfo != undefined) {
921            console.info('get distributed info ' + JSON.stringify(devicesInfo));
922        } else {
923            console.info('get distributed info is undefined!');
924        }
925    }).catch((error) => {
926        console.error('get distributed info failed with error: ' + error);
927    });
928}
929```
930
931### getActivePeers<sup>8+</sup>
932
933getActivePeers(callback: AsyncCallback\<Array\<PeerInfo>>): void;
934
935获取在线对端设备的信息,使用callback方式返回异步结果。
936
937**系统接口**:此接口为系统接口。
938
939**需要权限**:ohos.permission.READ_MEDIA
940
941**系统能力**:SystemCapability.Multimedia.MediaLibrary.DistributedCore
942
943**返回值:**
944
945| 类型                  | 说明                   |
946| ------------------- | -------------------- |
947| callback: AsyncCallback\<Array\<[PeerInfo](#peerinfo8)>> | 返回获取的所有在线对端设备的PeerInfo |
948
949**示例:**
950
951```js
952async function example() {
953    media.getActivePeers((error, devicesInfo) => {
954        if (devicesInfo != undefined) {
955            console.info('get distributed info ' + JSON.stringify(devicesInfo));
956        } else {
957            console.error('get distributed failed with error: ' + error);
958        }
959    });
960}
961```
962
963
964### getAllPeers<sup>8+</sup>
965
966getAllPeers(): Promise\<Array\<PeerInfo>>;
967
968获取所有对端设备的信息,使用Promise方式返回异步结果
969
970**系统接口**:此接口为系统接口。
971
972**需要权限**:ohos.permission.READ_MEDIA
973
974**系统能力**:SystemCapability.Multimedia.MediaLibrary.DistributedCore
975
976**返回值:**
977
978| 类型                  | 说明                   |
979| ------------------- | -------------------- |
980|  Promise\<Array\<[PeerInfo](#peerinfo8)>> | 返回获取的所有对端设备的PeerInfo |
981
982**示例:**
983
984```js
985async function example() {
986    media.getAllPeers().then((devicesInfo) => {
987        if (devicesInfo != undefined) {
988            console.info('get distributed info ' + JSON.stringify(devicesInfo));
989        } else {
990            console.info('get distributed info is undefined!');
991        }
992    }).catch((error) => {
993        console.error('get distributed info failed with error: ' + error);
994    });
995}
996```
997
998### getAllPeers<sup>8+</sup>
999
1000getAllPeers(callback: AsyncCallback\<Array\<PeerInfo>>): void;
1001
1002获取所有对端设备的信息,使用callback方式返回异步结果。
1003
1004**系统接口**:此接口为系统接口。
1005
1006**需要权限**:ohos.permission.READ_MEDIA
1007
1008**系统能力**:SystemCapability.Multimedia.MediaLibrary.DistributedCore
1009
1010**返回值:**
1011
1012| 类型                  | 说明                   |
1013| ------------------- | -------------------- |
1014| callback: AsyncCallback\<Array\<[PeerInfo](#peerinfo8)>> | 返回获取的所有对端设备的PeerInfo |
1015
1016**示例:**
1017
1018```js
1019async function example() {
1020    media.getAllPeers((error, devicesInfo) => {
1021        if (devicesInfo != undefined) {
1022            console.info('get distributed info ' + JSON.stringify(devicesInfo));
1023        } else {
1024            console.error('get distributed failed with error: ' + error);
1025        }
1026    });
1027}
1028```
1029
1030## FileAsset<sup>7+</sup>
1031
1032提供封装文件属性的方法。
1033
1034> **说明:**
1035> 1. title字段默认为去掉后缀的文件名,音频和视频文件会尝试解析文件内容,部分设备写入后在触发扫描时会被还原。
1036> 2. orientation字段部分设备可能不支持修改,建议使用image组件的[ModifyImageProperty](js-apis-image.md#modifyimageproperty9)接口。
1037
1038### 属性
1039
1040**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.MediaLibrary.Core
1041
1042| 名称                      | 类型                     | 可读 | 可写 | 说明                                                   |
1043| ------------------------- | ------------------------ | ---- | ---- | ------------------------------------------------------ |
1044| id                        | number                   | 是   | 否   | 文件资源编号                                           |
1045| uri                       | string                   | 是   | 否   | 文件资源uri(如:datashare:///media/image/2)         |
1046| mimeType                  | string                   | 是   | 否   | 文件扩展属性                                           |
1047| mediaType<sup>8+</sup>    | [MediaType](#mediatype8) | 是   | 否   | 媒体类型                                               |
1048| displayName               | string                   | 是   | 是   | 显示文件名,包含后缀名                                 |
1049| title                     | string                   | 是   | 是   | 文件标题                                               |
1050| relativePath<sup>8+</sup> | string                   | 是   | 是   | 相对公共目录路径                                       |
1051| parent<sup>8+</sup>       | number                   | 是   | 否   | 父目录id                                               |
1052| size                      | number                   | 是   | 否   | 文件大小(单位:字节)                                 |
1053| dateAdded                 | number                   | 是   | 否   | 添加日期(添加文件时间到1970年1月1日的秒数值)         |
1054| dateModified              | number                   | 是   | 否   | 修改日期(修改文件时间到1970年1月1日的秒数值,修改文件名不会改变此值,当文件内容发生修改时才会更新)|
1055| dateTaken                 | number                   | 是   | 否   | 拍摄日期(文件拍照时间到1970年1月1日的秒数值)         |
1056| artist<sup>8+</sup>       | string                   | 是   | 否   | 作者                                                   |
1057| audioAlbum<sup>8+</sup>   | string                   | 是   | 否   | 专辑                                                   |
1058| width                     | number                   | 是   | 否   | 图片宽度(单位:像素)                                 |
1059| height                    | number                   | 是   | 否   | 图片高度(单位:像素)                                 |
1060| orientation               | number                   | 是   | 是   | 图片显示方向(顺时针旋转角度,如0,90,180  单位:度) |
1061| duration<sup>8+</sup>     | number                   | 是   | 否   | 持续时间(单位:毫秒)                                   |
1062| albumId                   | number                   | 是   | 否   | 文件所归属的相册编号                                   |
1063| albumUri<sup>8+</sup>     | string                   | 是   | 否   | 文件所归属相册uri                                      |
1064| albumName                 | string                   | 是   | 否   | 文件所归属相册名称                                     |
1065
1066
1067### isDirectory<sup>8+</sup>
1068
1069isDirectory(callback: AsyncCallback&lt;boolean&gt;): void
1070
1071判断fileAsset是否为目录,使用callback方式返回异步结果。
1072
1073**需要权限**:ohos.permission.READ_MEDIA
1074
1075**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
1076
1077**参数:**
1078
1079| 参数名      | 类型                           | 必填   | 说明                  |
1080| -------- | ---------------------------- | ---- | ------------------- |
1081| callback | AsyncCallback&lt;boolean&gt; | 是    | 当前FileAsset是否是目录的回调 |
1082
1083**示例:**
1084
1085```js
1086async function example() {
1087    let fileKeyObj = mediaLibrary.FileKey;
1088    let imageType = mediaLibrary.MediaType.IMAGE;
1089    let getImageOp = {
1090        selections: fileKeyObj.MEDIA_TYPE + '= ?',
1091        selectionArgs: [imageType.toString()],
1092        order: fileKeyObj.DATE_ADDED + ' DESC',
1093    };
1094    const fetchFileResult = await media.getFileAssets(getImageOp);
1095    const asset = await fetchFileResult.getFirstObject();
1096    asset.isDirectory((error, isDirectory) => {
1097        if (error) {
1098            console.error('isDirectory failed with error: ' + error);
1099        } else {
1100            console.info('isDirectory result:' + isDirectory);
1101        }
1102    });
1103    fetchFileResult.close();
1104}
1105```
1106
1107### isDirectory<sup>8+</sup>
1108
1109isDirectory():Promise&lt;boolean&gt;
1110
1111判断fileAsset是否为目录,使用Promise方式返回异步结果。
1112
1113**需要权限**:ohos.permission.READ_MEDIA
1114
1115**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
1116
1117**返回值:**
1118
1119| 类型                     | 说明                           |
1120| ---------------------- | ---------------------------- |
1121| Promise&lt;boolean&gt; | Promise实例,返回当前FileAsset是否是目录 |
1122
1123**示例:**
1124
1125```js
1126async function example() {
1127    let fileKeyObj = mediaLibrary.FileKey;
1128    let imageType = mediaLibrary.MediaType.IMAGE;
1129    let getImageOp = {
1130        selections: fileKeyObj.MEDIA_TYPE + '= ?',
1131        selectionArgs: [imageType.toString()],
1132        order: fileKeyObj.DATE_ADDED + ' DESC',
1133    };
1134    const fetchFileResult = await media.getFileAssets(getImageOp);
1135    const asset = await fetchFileResult.getFirstObject();
1136    asset.isDirectory().then((isDirectory) => {
1137        console.info('isDirectory result:' + isDirectory);
1138    }).catch((error) => {
1139        console.error('isDirectory failed with error: ' + error);
1140    });
1141    fetchFileResult.close();
1142}
1143```
1144
1145### commitModify<sup>8+</sup>
1146
1147commitModify(callback: AsyncCallback&lt;void&gt;): void
1148
1149修改文件的元数据,使用callback方式返回异步结果。
1150
1151**需要权限**:ohos.permission.READ_MEDIA, ohos.permission.WRITE_MEDIA
1152
1153**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
1154
1155**参数:**
1156
1157| 参数名      | 类型                        | 必填   | 说明    |
1158| -------- | ------------------------- | ---- | ----- |
1159| callback | AsyncCallback&lt;void&gt; | 是    | 回调返回空 |
1160
1161**示例:**
1162
1163```js
1164async function example() {
1165    let fileKeyObj = mediaLibrary.FileKey;
1166    let imageType = mediaLibrary.MediaType.IMAGE;
1167    let getImageOp = {
1168        selections: fileKeyObj.MEDIA_TYPE + '= ?',
1169        selectionArgs: [imageType.toString()],
1170        order: fileKeyObj.DATE_ADDED + ' DESC',
1171    };
1172    const fetchFileResult = await media.getFileAssets(getImageOp);
1173    const asset = await fetchFileResult.getFirstObject();
1174    asset.title = 'newtitle';
1175    asset.commitModify(() => {
1176        console.info('commitModify successfully');
1177    });
1178    fetchFileResult.close();
1179}
1180```
1181
1182### commitModify<sup>8+</sup>
1183
1184commitModify(): Promise&lt;void&gt;
1185
1186修改文件的元数据,使用promise方式返回异步结果。
1187
1188**需要权限**:ohos.permission.READ_MEDIA, ohos.permission.WRITE_MEDIA
1189
1190**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
1191
1192**返回值:**
1193
1194| 类型                  | 说明         |
1195| ------------------- | ---------- |
1196| Promise&lt;void&gt; | Promise返回空 |
1197
1198**示例:**
1199
1200```js
1201async function example() {
1202    let fileKeyObj = mediaLibrary.FileKey;
1203    let imageType = mediaLibrary.MediaType.IMAGE;
1204    let getImageOp = {
1205        selections: fileKeyObj.MEDIA_TYPE + '= ?',
1206        selectionArgs: [imageType.toString()],
1207        order: fileKeyObj.DATE_ADDED + ' DESC',
1208    };
1209    const fetchFileResult = await media.getFileAssets(getImageOp);
1210    const asset = await fetchFileResult.getFirstObject();
1211    asset.title = 'newtitle';
1212    await asset.commitModify();
1213    fetchFileResult.close();
1214}
1215```
1216
1217### open<sup>8+</sup>
1218
1219open(mode: string, callback: AsyncCallback&lt;number&gt;): void
1220
1221打开当前文件,使用callback方式返回异步结果。
1222
1223**注意**:以 'w' 模式打开文件时,返回的fd无法进行读取。但由于不同文件系统实现上的差异,部分用户态文件系统在 'w' 模式打开时会允许用fd读取。若有针对fd的读写行为,建议使用 'rw' 模式打开文件。当前写操作是互斥的操作,写操作完成后需要调用close进行释放。
1224
1225**需要权限**:ohos.permission.READ_MEDIA or ohos.permission.WRITE_MEDIA
1226
1227**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
1228
1229**参数**
1230
1231| 参数名      | 类型                          | 必填   | 说明                                  |
1232| -------- | --------------------------- | ---- | ----------------------------------- |
1233| mode     | string                      | 是    | 打开文件方式,如:'r'(只读), 'w'(只写), 'rw'(读写) |
1234| callback | AsyncCallback&lt;number&gt; | 是    | 回调返回文件描述符                            |
1235
1236**示例:**
1237
1238```js
1239async function example() {
1240    let mediaType = mediaLibrary.MediaType.IMAGE;
1241    let DIR_IMAGE = mediaLibrary.DirectoryType.DIR_IMAGE;
1242    const path = await media.getPublicDirectory(DIR_IMAGE);
1243    const asset = await media.createAsset(mediaType, 'image00003.jpg', path);
1244    asset.open('rw', (error, fd) => {
1245        if (fd > 0) {
1246            asset.close(fd);
1247        } else {
1248            console.error('File Open failed with error: ' + error);
1249        }
1250    });
1251}
1252```
1253
1254### open<sup>8+</sup>
1255
1256open(mode: string): Promise&lt;number&gt;
1257
1258打开当前文件,使用promise方式返回异步结果。
1259
1260**注意**:以 'w' 模式打开文件时,返回的fd无法进行读取。但由于不同文件系统实现上的差异,部分用户态文件系统在 'w' 模式打开时会允许用fd读取。若有针对fd的读写行为,建议使用 'rw' 模式打开文件。当前写操作是互斥的操作,写操作完成后需要调用close进行释放。
1261
1262**需要权限**:ohos.permission.READ_MEDIA or ohos.permission.WRITE_MEDIA
1263
1264**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
1265
1266**参数:**
1267
1268| 参数名  | 类型     | 必填   | 说明                                  |
1269| ---- | ------ | ---- | ----------------------------------- |
1270| mode | string | 是    | 打开文件方式,如:'r'(只读), 'w'(只写), 'rw'(读写) |
1271
1272**返回值:**
1273
1274| 类型                    | 说明            |
1275| --------------------- | ------------- |
1276| Promise&lt;number&gt; | Promise返回文件描述符 |
1277
1278**示例:**
1279
1280```js
1281async function example() {
1282    let mediaType = mediaLibrary.MediaType.IMAGE;
1283    let DIR_IMAGE = mediaLibrary.DirectoryType.DIR_IMAGE;
1284    const path = await media.getPublicDirectory(DIR_IMAGE);
1285    const asset = await media.createAsset(mediaType, 'image00003.jpg', path);
1286    asset.open('rw').then((fd) => {
1287        console.info('File open fd: ' + fd);
1288    }).catch((error) => {
1289        console.error('File open failed with error: ' + error);
1290    });
1291}
1292```
1293
1294### close<sup>8+</sup>
1295
1296close(fd: number, callback: AsyncCallback&lt;void&gt;): void
1297
1298关闭当前文件,使用callback方式返回异步结果。
1299
1300**需要权限**:ohos.permission.READ_MEDIA or ohos.permission.WRITE_MEDIA
1301
1302**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
1303
1304**参数:**
1305
1306| 参数名      | 类型                        | 必填   | 说明    |
1307| -------- | ------------------------- | ---- | ----- |
1308| fd       | number                    | 是    | 文件描述符 |
1309| callback | AsyncCallback&lt;void&gt; | 是    | 回调返回空 |
1310
1311**示例:**
1312
1313```js
1314async function example() {
1315    let fileKeyObj = mediaLibrary.FileKey;
1316    let imageType = mediaLibrary.MediaType.IMAGE;
1317    let getImageOp = {
1318        selections: fileKeyObj.MEDIA_TYPE + '= ?',
1319        selectionArgs: [imageType.toString()],
1320        order: fileKeyObj.DATE_ADDED + ' DESC',
1321    };
1322    const fetchFileResult = await media.getFileAssets(getImageOp);
1323    const asset = await fetchFileResult.getFirstObject();
1324    asset.open('rw').then((fd) => {
1325        console.info('File open fd: ' + fd);
1326        asset.close(fd, (error) => {
1327            if (error) {
1328                console.error('asset.close failed with error: ' + error);
1329            } else {
1330                console.info('asset.close successfully');
1331            }
1332        });
1333    }).catch((error) => {
1334        console.error('File open failed with error: ' + error);
1335    });
1336    fetchFileResult.close();
1337}
1338```
1339
1340### close<sup>8+</sup>
1341
1342close(fd: number): Promise&lt;void&gt;
1343
1344关闭当前文件,使用promise方式返回异步结果。
1345
1346**需要权限**:ohos.permission.READ_MEDIA or ohos.permission.WRITE_MEDIA
1347
1348**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
1349
1350**参数:**
1351
1352| 参数名  | 类型     | 必填   | 说明    |
1353| ---- | ------ | ---- | ----- |
1354| fd   | number | 是    | 文件描述符 |
1355
1356**返回值:**
1357
1358| 类型                  | 说明         |
1359| ------------------- | ---------- |
1360| Promise&lt;void&gt; | Promise返回空 |
1361
1362**示例:**
1363
1364```js
1365async function example() {
1366    let fileKeyObj = mediaLibrary.FileKey;
1367    let imageType = mediaLibrary.MediaType.IMAGE;
1368    let getImageOp = {
1369        selections: fileKeyObj.MEDIA_TYPE + '= ?',
1370        selectionArgs: [imageType.toString()],
1371        order: fileKeyObj.DATE_ADDED + ' DESC',
1372    };
1373    const fetchFileResult = await media.getFileAssets(getImageOp);
1374    const asset = await fetchFileResult.getFirstObject();
1375    asset.open('rw').then((fd) => {
1376        console.info('File fd!' + fd);
1377        asset.close(fd).then(() => {
1378            console.info('asset.close successfully');
1379        }).catch((closeErr) => {
1380            console.error('asset.close fail, closeErr: ' + closeErr);
1381        });
1382    }).catch((error) => {
1383        console.error('open File failed with error: ' + error);
1384    });
1385    fetchFileResult.close();
1386}
1387```
1388
1389### getThumbnail<sup>8+</sup>
1390
1391getThumbnail(callback: AsyncCallback&lt;image.PixelMap&gt;): void
1392
1393获取文件的缩略图,使用callback方式返回异步结果。
1394
1395**需要权限**:ohos.permission.READ_MEDIA
1396
1397**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
1398
1399**参数:**
1400
1401| 参数名      | 类型                                  | 必填   | 说明               |
1402| -------- | ----------------------------------- | ---- | ---------------- |
1403| callback | AsyncCallback&lt;image.PixelMap&gt; | 是    | 回调返回缩略图的PixelMap |
1404
1405**示例:**
1406
1407```js
1408async function example() {
1409    let fileKeyObj = mediaLibrary.FileKey;
1410    let imageType = mediaLibrary.MediaType.IMAGE;
1411    let getImageOp = {
1412        selections: fileKeyObj.MEDIA_TYPE + '= ?',
1413        selectionArgs: [imageType.toString()],
1414        order: fileKeyObj.DATE_ADDED + ' DESC',
1415    };
1416    const fetchFileResult = await media.getFileAssets(getImageOp);
1417    const asset = await fetchFileResult.getFirstObject();
1418    asset.getThumbnail((error, pixelmap) => {
1419        if (error) {
1420            console.error('mediaLibrary getThumbnail failed with error: ' + error);
1421        } else {
1422            console.info('mediaLibrary getThumbnail Successful, pixelmap ' + JSON.stringify(pixelmap));
1423        }
1424    });
1425    fetchFileResult.close();
1426}
1427```
1428
1429### getThumbnail<sup>8+</sup>
1430
1431getThumbnail(size: Size, callback: AsyncCallback&lt;image.PixelMap&gt;): void
1432
1433获取文件的缩略图,传入缩略图尺寸,使用callback方式返回异步结果。
1434
1435**需要权限**:ohos.permission.READ_MEDIA
1436
1437**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
1438
1439**参数:**
1440
1441| 参数名      | 类型                                  | 必填   | 说明               |
1442| -------- | ----------------------------------- | ---- | ---------------- |
1443| size     | [Size](#size8)                      | 是    | 缩略图尺寸            |
1444| callback | AsyncCallback&lt;image.PixelMap&gt; | 是    | 回调返回缩略图的PixelMap |
1445
1446**示例:**
1447
1448```js
1449async function example() {
1450    let fileKeyObj = mediaLibrary.FileKey;
1451    let imageType = mediaLibrary.MediaType.IMAGE;
1452    let getImageOp = {
1453        selections: fileKeyObj.MEDIA_TYPE + '= ?',
1454        selectionArgs: [imageType.toString()],
1455        order: fileKeyObj.DATE_ADDED + ' DESC',
1456    };
1457    let size = { width: 720, height: 720 };
1458    const fetchFileResult = await media.getFileAssets(getImageOp);
1459    const asset = await fetchFileResult.getFirstObject();
1460    asset.getThumbnail(size, (error, pixelmap) => {
1461        if (error) {
1462            console.error('mediaLibrary getThumbnail failed with error: ' + error);
1463        } else {
1464            console.info('mediaLibrary getThumbnail Successful, pixelmap ' + JSON.stringify(pixelmap));
1465        }
1466    });
1467    fetchFileResult.close();
1468}
1469```
1470
1471### getThumbnail<sup>8+</sup>
1472
1473getThumbnail(size?: Size): Promise&lt;image.PixelMap&gt;
1474
1475获取文件的缩略图,传入缩略图尺寸,使用promise方式返回异步结果。
1476
1477**需要权限**:ohos.permission.READ_MEDIA
1478
1479**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
1480
1481**参数:**
1482
1483| 参数名  | 类型             | 必填   | 说明    |
1484| ---- | -------------- | ---- | ----- |
1485| size | [Size](#size8) | 否    | 缩略图尺寸 |
1486
1487**返回值:**
1488
1489| 类型                            | 说明                    |
1490| ----------------------------- | --------------------- |
1491| Promise&lt;image.PixelMap&gt; | Promise返回缩略图的PixelMap |
1492
1493**示例:**
1494
1495```js
1496async function example() {
1497    let fileKeyObj = mediaLibrary.FileKey;
1498    let imageType = mediaLibrary.MediaType.IMAGE;
1499    let getImageOp = {
1500        selections: fileKeyObj.MEDIA_TYPE + '= ?',
1501        selectionArgs: [imageType.toString()],
1502        order: fileKeyObj.DATE_ADDED + ' DESC',
1503    };
1504    let size = { width: 720, height: 720 };
1505    const fetchFileResult = await media.getFileAssets(getImageOp);
1506    const asset = await fetchFileResult.getFirstObject();
1507    asset.getThumbnail(size).then((pixelmap) => {
1508        console.info('mediaLibrary getThumbnail Successful, pixelmap ' + JSON.stringify(pixelmap));
1509    }).catch((error) => {
1510        console.error('mediaLibrary getThumbnail failed with error: ' + error);
1511    });
1512    fetchFileResult.close();
1513}
1514```
1515
1516### favorite<sup>8+</sup>
1517
1518favorite(isFavorite: boolean, callback: AsyncCallback&lt;void&gt;): void
1519
1520将文件设置为收藏文件,使用callback方式返回异步结果。
1521
1522**需要权限**:ohos.permission.READ_MEDIA, ohos.permission.WRITE_MEDIA
1523
1524**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
1525
1526**参数:**
1527
1528| 参数名        | 类型                        | 必填   | 说明                                 |
1529| ---------- | ------------------------- | ---- | ---------------------------------- |
1530| isFavorite | boolean                   | 是    | 是否设置为收藏文件, true:设置为收藏文件,false:取消收藏 |
1531| callback   | AsyncCallback&lt;void&gt; | 是    | 回调返回空                              |
1532
1533**示例:**
1534
1535```js
1536async function example() {
1537    let fileKeyObj = mediaLibrary.FileKey;
1538    let imageType = mediaLibrary.MediaType.IMAGE;
1539    let getImageOp = {
1540        selections: fileKeyObj.MEDIA_TYPE + '= ?',
1541        selectionArgs: [imageType.toString()],
1542        order: fileKeyObj.DATE_ADDED + ' DESC',
1543    };
1544    const fetchFileResult = await media.getFileAssets(getImageOp);
1545    const asset = await fetchFileResult.getFirstObject();
1546    asset.favorite(true,(error) => {
1547        if (error) {
1548            console.error('mediaLibrary favorite failed with error: ' + error);
1549        } else {
1550            console.info('mediaLibrary favorite Successful');
1551        }
1552    });
1553    fetchFileResult.close();
1554}
1555```
1556
1557### favorite<sup>8+</sup>
1558
1559favorite(isFavorite: boolean): Promise&lt;void&gt;
1560
1561将文件设置为收藏文件,使用promise方式返回异步结果。
1562
1563**需要权限**:ohos.permission.READ_MEDIA, ohos.permission.WRITE_MEDIA
1564
1565**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
1566
1567**参数:**
1568
1569| 参数名        | 类型      | 必填   | 说明                                 |
1570| ---------- | ------- | ---- | ---------------------------------- |
1571| isFavorite | boolean | 是    | 是否设置为收藏文件, true:设置为收藏文件,false:取消收藏 |
1572
1573**返回值:**
1574
1575| 类型                  | 说明         |
1576| ------------------- | ---------- |
1577| Promise&lt;void&gt; | Promise返回空 |
1578
1579**示例:**
1580
1581```js
1582async function example() {
1583    let fileKeyObj = mediaLibrary.FileKey;
1584    let imageType = mediaLibrary.MediaType.IMAGE;
1585    let getImageOp = {
1586        selections: fileKeyObj.MEDIA_TYPE + '= ?',
1587        selectionArgs: [imageType.toString()],
1588        order: fileKeyObj.DATE_ADDED + ' DESC',
1589    };
1590    const fetchFileResult = await media.getFileAssets(getImageOp);
1591    const asset = await fetchFileResult.getFirstObject();
1592    asset.favorite(true).then(() => {
1593        console.info('mediaLibrary favorite Successful');
1594    }).catch((error) => {
1595        console.error('mediaLibrary favorite failed with error: ' + error);
1596    });
1597    fetchFileResult.close();
1598}
1599```
1600
1601### isFavorite<sup>8+</sup>
1602
1603isFavorite(callback: AsyncCallback&lt;boolean&gt;): void
1604
1605判断该文件是否为收藏文件,使用callback方式返回异步结果。
1606
1607**需要权限**:ohos.permission.READ_MEDIA
1608
1609**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
1610
1611**参数:**
1612
1613| 参数名      | 类型                           | 必填   | 说明          |
1614| -------- | ---------------------------- | ---- | ----------- |
1615| callback | AsyncCallback&lt;boolean&gt; | 是    | 回调表示是否为收藏文件 |
1616
1617**示例:**
1618
1619```js
1620async function example() {
1621    let fileKeyObj = mediaLibrary.FileKey;
1622    let imageType = mediaLibrary.MediaType.IMAGE;
1623    let getImageOp = {
1624        selections: fileKeyObj.MEDIA_TYPE + '= ?',
1625        selectionArgs: [imageType.toString()],
1626        order: fileKeyObj.DATE_ADDED + ' DESC',
1627    };
1628    const fetchFileResult = await media.getFileAssets(getImageOp);
1629    const asset = await fetchFileResult.getFirstObject();
1630    asset.isFavorite((error, isFavorite) => {
1631        if (error) {
1632            console.error('mediaLibrary favoriisFavoritete failed with error: ' + error);
1633        } else {
1634            console.info('mediaLibrary isFavorite Successful, isFavorite result: ' + isFavorite);
1635        }
1636    });
1637    fetchFileResult.close();
1638}
1639```
1640
1641### isFavorite<sup>8+</sup>
1642
1643isFavorite():Promise&lt;boolean&gt;
1644
1645判断该文件是否为收藏文件,使用promise方式返回异步结果。
1646
1647**需要权限**:ohos.permission.READ_MEDIA
1648
1649**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
1650
1651**返回值:**
1652
1653| 类型                     | 说明                 |
1654| ---------------------- | ------------------ |
1655| Promise&lt;boolean&gt; | Promise回调表示是否是收藏文件 |
1656
1657**示例:**
1658
1659```js
1660async function example() {
1661    let fileKeyObj = mediaLibrary.FileKey;
1662    let imageType = mediaLibrary.MediaType.IMAGE;
1663    let getImageOp = {
1664        selections: fileKeyObj.MEDIA_TYPE + '= ?',
1665        selectionArgs: [imageType.toString()],
1666        order: fileKeyObj.DATE_ADDED + ' DESC',
1667    };
1668    const fetchFileResult = await media.getFileAssets(getImageOp);
1669    const asset = await fetchFileResult.getFirstObject();
1670    asset.isFavorite().then((isFavorite) => {
1671        console.info('mediaLibrary isFavorite Successful, isFavorite result: ' + isFavorite);
1672    }).catch((error) => {
1673        console.error('mediaLibrary favoriisFavoritete failed with error: ' + error);
1674    });
1675    fetchFileResult.close();
1676}
1677```
1678
1679### trash<sup>8+</sup>
1680
1681trash(isTrash: boolean, callback: AsyncCallback&lt;void&gt;): void
1682
1683当文件被定位时,将文件放到垃圾文件夹,使用callback方式返回异步结果。
1684
1685放入垃圾文件夹的文件不会被真正删除,可以通过isTrash = false参数恢复成正常文件。
1686
1687**需要权限**:ohos.permission.READ_MEDIA, ohos.permission.WRITE_MEDIA
1688
1689**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
1690
1691**参数:**
1692
1693| 参数名      | 类型                        | 必填   | 说明        |
1694| -------- | ------------------------- | ---- | --------- |
1695| isTrash  | boolean                   | 是    | 是否设置为垃圾文件 |
1696| callback | AsyncCallback&lt;void&gt; | 是    | 回调返回空     |
1697
1698**示例:**
1699
1700```js
1701async function example() {
1702    let fileKeyObj = mediaLibrary.FileKey;
1703    let imageType = mediaLibrary.MediaType.IMAGE;
1704    let getImageOp = {
1705        selections: fileKeyObj.MEDIA_TYPE + '= ?',
1706        selectionArgs: [imageType.toString()],
1707        order: fileKeyObj.DATE_ADDED + ' DESC',
1708    };
1709    const fetchFileResult = await media.getFileAssets(getImageOp);
1710    const asset = await fetchFileResult.getFirstObject();
1711    asset.trash(true, (error) => {
1712        if (error) {
1713            console.error('mediaLibrary trash failed with error: ' + error);
1714        } else {
1715            console.info('mediaLibrary trash Successful');
1716        }
1717    });
1718    fetchFileResult.close();
1719}
1720```
1721
1722### trash<sup>8+</sup>
1723
1724trash(isTrash: boolean): Promise&lt;void&gt;
1725
1726当文件被定位时,将文件放到垃圾文件夹,使用promise方式返回异步结果。
1727
1728放入垃圾文件夹的文件不会被真正删除,可以通过isTrash = false参数恢复成正常文件。
1729
1730**需要权限**:ohos.permission.READ_MEDIA, ohos.permission.WRITE_MEDIA
1731
1732**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
1733
1734**参数:**
1735
1736| 参数名     | 类型      | 必填   | 说明        |
1737| ------- | ------- | ---- | --------- |
1738| isTrash | boolean | 是    | 是否设置为垃圾文件 |
1739
1740**返回值:**
1741
1742| 类型                  | 说明         |
1743| ------------------- | ---------- |
1744| Promise&lt;void&gt; | Promise返回空 |
1745
1746**示例:**
1747
1748```js
1749async function example() {
1750    let fileKeyObj = mediaLibrary.FileKey;
1751    let imageType = mediaLibrary.MediaType.IMAGE;
1752    let getImageOp = {
1753        selections: fileKeyObj.MEDIA_TYPE + '= ?',
1754        selectionArgs: [imageType.toString()],
1755        order: fileKeyObj.DATE_ADDED + ' DESC',
1756    };
1757    const fetchFileResult = await media.getFileAssets(getImageOp);
1758    const asset = await fetchFileResult.getFirstObject();
1759    asset.trash(true).then(() => {
1760        console.info('trash successfully');
1761    }).catch((error) => {
1762        console.error('trash failed with error: ' + error);
1763    });
1764    fetchFileResult.close();
1765}
1766```
1767
1768### isTrash<sup>8+</sup>
1769
1770isTrash(callback: AsyncCallback&lt;boolean&gt;): void
1771
1772当文件被定位,判断文件是否为垃圾文件,使用callback方式返回异步结果。
1773
1774**需要权限**:ohos.permission.READ_MEDIA
1775
1776**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
1777
1778**参数:**
1779
1780| 参数名      | 类型                           | 必填   | 说明              |
1781| -------- | ---------------------------- | ---- | --------------- |
1782| callback | AsyncCallback&lt;boolean&gt; | 是    | 回调返回表示文件是否为垃圾文件 |
1783
1784**示例:**
1785
1786```js
1787async function example() {
1788    let fileKeyObj = mediaLibrary.FileKey;
1789    let imageType = mediaLibrary.MediaType.IMAGE;
1790    let getImageOp = {
1791        selections: fileKeyObj.MEDIA_TYPE + '= ?',
1792        selectionArgs: [imageType.toString()],
1793        order: fileKeyObj.DATE_ADDED + ' DESC',
1794    };
1795    const fetchFileResult = await media.getFileAssets(getImageOp);
1796    const asset = await fetchFileResult.getFirstObject();
1797    asset.isTrash((error, isTrash) => {
1798        if (error) {
1799            console.error('Failed to get trash state failed with error: ' + error);
1800            return;
1801        }
1802        console.info('Get trash state successfully, isTrash result: ' + isTrash);
1803    });
1804    fetchFileResult.close();
1805}
1806```
1807
1808### isTrash<sup>8+</sup>
1809
1810isTrash():Promise&lt;boolean&gt;
1811
1812当文件被定位,判断文件是否为垃圾文件,使用promise方式返回异步结果。
1813
1814**需要权限**:ohos.permission.READ_MEDIA
1815
1816**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
1817
1818**返回值:**
1819
1820| 类型                  | 说明                   |
1821| ------------------- | -------------------- |
1822| Promise&lt;void&gt; | Promise回调表示文件是否为垃圾文件 |
1823
1824**示例:**
1825
1826```js
1827async function example() {
1828    let fileKeyObj = mediaLibrary.FileKey;
1829    let imageType = mediaLibrary.MediaType.IMAGE;
1830    let getImageOp = {
1831        selections: fileKeyObj.MEDIA_TYPE + '= ?',
1832        selectionArgs: [imageType.toString()],
1833        order: fileKeyObj.DATE_ADDED + ' DESC',
1834    };
1835    const fetchFileResult = await media.getFileAssets(getImageOp);
1836    const asset = await fetchFileResult.getFirstObject();
1837    asset.isTrash().then((isTrash) => {
1838        console.info('isTrash result: ' + isTrash);
1839    }).catch((error) => {
1840        console.error('isTrash failed with error: ' + error);
1841    });
1842    fetchFileResult.close();
1843}
1844```
1845
1846## FetchFileResult<sup>7+</sup>
1847
1848文件检索结果集。
1849
1850### getCount<sup>7+</sup>
1851
1852getCount(): number
1853
1854获取文件检索结果中的文件总数。
1855
1856**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
1857
1858**返回值**:
1859
1860| 类型     | 说明       |
1861| ------ | -------- |
1862| number | 检索到的文件总数 |
1863
1864**示例**:
1865
1866```js
1867async function example() {
1868    let fileKeyObj = mediaLibrary.FileKey;
1869    let fileType = mediaLibrary.MediaType.FILE;
1870    let getFileCountOneOp = {
1871        selections: fileKeyObj.MEDIA_TYPE + '= ?',
1872        selectionArgs: [fileType.toString()],
1873        order: fileKeyObj.DATE_ADDED + ' DESC',
1874    };
1875    let fetchFileResult = await media.getFileAssets(getFileCountOneOp);
1876    const fetchCount = fetchFileResult.getCount();
1877    console.info('fetchCount result: ' + fetchCount);
1878    fetchFileResult.close();
1879}
1880```
1881
1882### isAfterLast<sup>7+</sup>
1883
1884isAfterLast(): boolean
1885
1886检查结果集是否指向最后一行。
1887
1888**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
1889
1890**返回值**:
1891
1892| 类型      | 说明                                 |
1893| ------- | ---------------------------------- |
1894| boolean | 当读到最后一条记录后,后续没有记录返回true,否则返回false。 |
1895
1896**示例**:
1897
1898```js
1899async function example() {
1900    let fileKeyObj = mediaLibrary.FileKey;
1901    let imageType = mediaLibrary.MediaType.IMAGE;
1902    let getImageOp = {
1903        selections: fileKeyObj.MEDIA_TYPE + '= ?',
1904        selectionArgs: [imageType.toString()],
1905        order: fileKeyObj.DATE_ADDED + ' DESC',
1906    };
1907    let fetchFileResult = await media.getFileAssets(getImageOp);
1908    const fetchCount = fetchFileResult.getCount();
1909    console.info('mediaLibrary fetchFileResult.getCount, count:' + fetchCount);
1910    let fileAsset = await fetchFileResult.getFirstObject();
1911    for (var i = 1; i < fetchCount; i++) {
1912        fileAsset = await fetchFileResult.getNextObject();
1913        if(i == fetchCount - 1) {
1914            var result = fetchFileResult.isAfterLast();
1915            console.info('mediaLibrary fileAsset isAfterLast result: ' + result);
1916            fetchFileResult.close();
1917        }
1918    }
1919}
1920```
1921
1922### close<sup>7+</sup>
1923
1924close(): void
1925
1926释放 FetchFileResult 实例并使其失效。无法调用其他方法。
1927
1928**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
1929
1930**示例**:
1931
1932```js
1933async function example() {
1934    let fileKeyObj = mediaLibrary.FileKey;
1935    let imageType = mediaLibrary.MediaType.IMAGE;
1936    let getImageOp = {
1937        selections: fileKeyObj.MEDIA_TYPE + '= ?',
1938        selectionArgs: [imageType.toString()],
1939        order: fileKeyObj.DATE_ADDED + ' DESC',
1940    };
1941    let fetchFileResult = await media.getFileAssets(getImageOp);
1942    fetchFileResult.close();
1943}
1944```
1945
1946### getFirstObject<sup>7+</sup>
1947
1948getFirstObject(callback: AsyncCallback&lt;FileAsset&gt;): void
1949
1950获取文件检索结果中的第一个文件资产。此方法使用回调返回FileAsset。
1951
1952**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
1953
1954**参数**:
1955
1956| 参数名   | 类型                                          | 必填 | 说明                                        |
1957| -------- | --------------------------------------------- | ---- | ------------------------------------------- |
1958| callback | AsyncCallback&lt;[FileAsset](#fileasset7)&gt; | 是   | 异步获取结果集中第一个FileAsset完成后的回调 |
1959
1960**示例**:
1961
1962```js
1963async function example() {
1964    let fileKeyObj = mediaLibrary.FileKey;
1965    let imageType = mediaLibrary.MediaType.IMAGE;
1966    let getImageOp = {
1967        selections: fileKeyObj.MEDIA_TYPE + '= ?',
1968        selectionArgs: [imageType.toString()],
1969        order: fileKeyObj.DATE_ADDED + ' DESC',
1970    };
1971    let fetchFileResult = await media.getFileAssets(getImageOp);
1972    fetchFileResult.getFirstObject((error, fileAsset) => {
1973        if (error) {
1974            console.error('fetchFileResult getFirstObject failed with error: ' + error);
1975            return;
1976        }
1977        console.info('getFirstObject successfully, displayName : ' + fileAsset.displayName);
1978        fetchFileResult.close();
1979    })
1980}
1981```
1982
1983### getFirstObject<sup>7+</sup>
1984
1985getFirstObject(): Promise&lt;FileAsset&gt;
1986
1987获取文件检索结果中的第一个文件资产。此方法使用Promise方式返回FileAsset。
1988
1989**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
1990
1991**返回值**:
1992
1993| 类型                                    | 说明                       |
1994| --------------------------------------- | -------------------------- |
1995| Promise&lt;[FileAsset](#fileasset7)&gt; | Promise方式返回FileAsset。 |
1996
1997**示例**:
1998
1999```js
2000async function example() {
2001    let fileKeyObj = mediaLibrary.FileKey;
2002    let imageType = mediaLibrary.MediaType.IMAGE;
2003    let getImageOp = {
2004        selections: fileKeyObj.MEDIA_TYPE + '= ?',
2005        selectionArgs: [imageType.toString()],
2006        order: fileKeyObj.DATE_ADDED + ' DESC',
2007    };
2008    let fetchFileResult = await media.getFileAssets(getImageOp);
2009    fetchFileResult.getFirstObject().then((fileAsset) => {
2010        console.info('getFirstObject successfully, displayName: ' + fileAsset.displayName);
2011        fetchFileResult.close();
2012    }).catch((error) => {
2013        console.error('getFirstObject failed with error: ' + error);
2014    });
2015}
2016```
2017
2018### getNextObject<sup>7+</sup>
2019
2020getNextObject(callback: AsyncCallback&lt;FileAsset&gt;): void
2021
2022获取文件检索结果中的下一个文件资产,此方法使用callback形式返回结果。
2023
2024> **说明**: 在使用前需要先使用[getFirstObject](#getfirstobject7)接口获取第一个文件资产,然后使用[isAfterLast](#isafterlast7)确认文件检索集当前不是指向最后一个时方可使用此接口。
2025
2026**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
2027
2028**参数**:
2029
2030| 参数名    | 类型                                          | 必填 | 说明                                      |
2031| --------- | --------------------------------------------- | ---- | ----------------------------------------- |
2032| callbacke | AsyncCallback&lt;[FileAsset](#fileasset7)&gt; | 是   | 异步返回结果集中下一个FileAsset之后的回调 |
2033
2034**示例**:
2035
2036```js
2037async function example() {
2038    let fileKeyObj = mediaLibrary.FileKey;
2039    let imageType = mediaLibrary.MediaType.IMAGE;
2040    let getImageOp = {
2041        selections: fileKeyObj.MEDIA_TYPE + '= ?',
2042        selectionArgs: [imageType.toString()],
2043        order: fileKeyObj.DATE_ADDED + ' DESC',
2044    };
2045    let fetchFileResult = await media.getFileAssets(getImageOp);
2046    let fileAsset = await fetchFileResult.getFirstObject();
2047    console.log('fetchFileResult getFirstObject successfully, displayName: ' + fileAsset.displayName);
2048    if (!fetchFileResult.isAfterLast()) {
2049        fetchFileResult.getNextObject((error, fileAsset) => {
2050            if (error) {
2051                console.error('fetchFileResult getNextObject failed with error: ' + error);
2052                return;
2053            }
2054            console.log('fetchFileResult getNextObject successfully, displayName: ' + fileAsset.displayName);
2055            fetchFileResult.close();
2056        })
2057    }
2058}
2059
2060```
2061
2062### getNextObject<sup>7+</sup>
2063
2064getNextObject(): Promise&lt;FileAsset&gt;
2065
2066获取文件检索结果中的下一个文件资产。此方法使用promise方式来异步返回FileAsset。
2067
2068> **说明**: 在使用前需要先使用[getFirstObject](#getfirstobject7)接口获取第一个文件资产,然后使用[isAfterLast](#isafterlast7)确认文件检索集当前不是指向最后一个时方可使用此接口。
2069
2070**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
2071
2072**返回值**:
2073
2074| 类型                                    | 说明              |
2075| --------------------------------------- | ----------------- |
2076| Promise&lt;[FileAsset](#fileasset7)&gt; | 返回FileAsset对象 |
2077
2078**示例**:
2079
2080```js
2081async function example() {
2082    let fileKeyObj = mediaLibrary.FileKey;
2083    let imageType = mediaLibrary.MediaType.IMAGE;
2084    let getImageOp = {
2085        selections: fileKeyObj.MEDIA_TYPE + '= ?',
2086        selectionArgs: [imageType.toString()],
2087        order: fileKeyObj.DATE_ADDED + ' DESC',
2088    };
2089    let fetchFileResult = await media.getFileAssets(getImageOp);
2090    let fileAsset = await fetchFileResult.getFirstObject();
2091    console.log('fetchFileResult getFirstObject successfully, displayName: ' + fileAsset.displayName);
2092    if (!fetchFileResult.isAfterLast()) {
2093        fetchFileResult.getNextObject().then((fileAsset) => {
2094            console.info('fetchFileResult getNextObject successfully, displayName: ' + fileAsset.displayName);
2095            fetchFileResult.close();
2096        }).catch((error) => {
2097            console.error('fetchFileResult getNextObject failed with error: ' + error);
2098        })
2099    }
2100}
2101```
2102
2103### getLastObject<sup>7+</sup>
2104
2105getLastObject(callback: AsyncCallback&lt;FileAsset&gt;): void
2106
2107获取文件检索结果中的最后一个文件资产。此方法使用callback回调来返回FileAsset。
2108
2109**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
2110
2111**参数**:
2112
2113| 参数名   | 类型                                          | 必填 | 说明                        |
2114| -------- | --------------------------------------------- | ---- | --------------------------- |
2115| callback | AsyncCallback&lt;[FileAsset](#fileasset7)&gt; | 是   | 异步返回FileAsset之后的回调 |
2116
2117**示例**:
2118
2119```js
2120async function example() {
2121    let fileKeyObj = mediaLibrary.FileKey;
2122    let imageType = mediaLibrary.MediaType.IMAGE;
2123    let getImageOp = {
2124        selections: fileKeyObj.MEDIA_TYPE + '= ?',
2125        selectionArgs: [imageType.toString()],
2126        order: fileKeyObj.DATE_ADDED + ' DESC',
2127    };
2128    let fetchFileResult = await media.getFileAssets(getImageOp);
2129    fetchFileResult.getLastObject((error, fileAsset) => {
2130        if (error) {
2131            console.error('getLastObject failed with error: ' + error);
2132            return;
2133        }
2134        console.info('getLastObject successfully, displayName: ' + fileAsset.displayName);
2135        fetchFileResult.close();
2136    })
2137}
2138```
2139
2140### getLastObject<sup>7+</sup>
2141
2142getLastObject(): Promise&lt;FileAsset&gt;
2143
2144获取文件检索结果中的最后一个文件资产。此方法使用Promise方式来返回FileAsset。
2145
2146**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
2147
2148**返回值**:
2149
2150| 类型                                    | 说明              |
2151| --------------------------------------- | ----------------- |
2152| Promise&lt;[FileAsset](#fileasset7)&gt; | 返回FileAsset对象 |
2153
2154**示例**:
2155
2156```js
2157async function example() {
2158    let fileKeyObj = mediaLibrary.FileKey;
2159    let imageType = mediaLibrary.MediaType.IMAGE;
2160    let getImageOp = {
2161        selections: fileKeyObj.MEDIA_TYPE + '= ?',
2162        selectionArgs: [imageType.toString()],
2163        order: fileKeyObj.DATE_ADDED + ' DESC',
2164    };
2165    let fetchFileResult = await media.getFileAssets(getImageOp);
2166    fetchFileResult.getLastObject().then((fileAsset) => {
2167        console.info('getLastObject successfully, displayName: ' + fileAsset.displayName);
2168        fetchFileResult.close();
2169    }).catch((error) => {
2170        console.error('getLastObject failed with error: ' + error);
2171    });
2172}
2173```
2174
2175### getPositionObject<sup>7+</sup>
2176
2177getPositionObject(index: number, callback: AsyncCallback&lt;FileAsset&gt;): void
2178
2179获取文件检索结果中具有指定索引的文件资产。此方法使用回调来返回FileAsset。
2180
2181**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
2182
2183**参数**:
2184
2185| 参数名       | 类型                                       | 必填   | 说明                 |
2186| -------- | ---------------------------------------- | ---- | ------------------ |
2187| index    | number                                   | 是    | 要获取的文件的索引,从0开始(注意该值要小于文件检索集的count值)     |
2188| callback | AsyncCallback&lt;[FileAsset](#fileasset7)&gt; | 是    | 异步返回FileAsset之后的回调 |
2189
2190**示例**:
2191
2192```js
2193async function example() {
2194    let fileKeyObj = mediaLibrary.FileKey;
2195    let imageType = mediaLibrary.MediaType.IMAGE;
2196    let getImageOp = {
2197        selections: fileKeyObj.MEDIA_TYPE + '= ?',
2198        selectionArgs: [imageType.toString()],
2199        order: fileKeyObj.DATE_ADDED + ' DESC',
2200    };
2201    let fetchFileResult = await media.getFileAssets(getImageOp);
2202    fetchFileResult.getPositionObject(0, (error, fileAsset) => {
2203        if (error) {
2204            console.error('getPositionObject failed with error: ' + error);
2205            return;
2206        }
2207        console.info('getPositionObject successfully, displayName: ' + fileAsset.displayName);
2208        fetchFileResult.close();
2209    })
2210}
2211```
2212
2213### getPositionObject<sup>7+</sup>
2214
2215getPositionObject(index: number): Promise&lt;FileAsset&gt;
2216
2217获取文件检索结果中具有指定索引的文件资产。此方法使用Promise形式返回文件Asset。
2218
2219**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
2220
2221**参数**:
2222
2223| 参数名    | 类型     | 必填   | 说明             |
2224| ----- | ------ | ---- | -------------- |
2225| index | number | 是    | 要获取的文件的索引,从0开始(注意该值要小于文件检索集的count值) |
2226
2227**返回值**:
2228
2229| 类型                                    | 说明              |
2230| --------------------------------------- | ----------------- |
2231| Promise&lt;[FileAsset](#fileasset7)&gt; | 返回FileAsset对象 |
2232
2233**示例**:
2234
2235```js
2236async function example() {
2237    let fileKeyObj = mediaLibrary.FileKey;
2238    let imageType = mediaLibrary.MediaType.IMAGE;
2239    let getImageOp = {
2240        selections: fileKeyObj.MEDIA_TYPE + '= ?',
2241        selectionArgs: [imageType.toString()],
2242        order: fileKeyObj.DATE_ADDED + ' DESC',
2243    };
2244    let fetchFileResult = await media.getFileAssets(getImageOp);
2245    fetchFileResult.getPositionObject(0).then((fileAsset) => {
2246        console.info('getPositionObject successfully, displayName: ' + fileAsset.displayName);
2247        fetchFileResult.close();
2248    }).catch((error) => {
2249        console.error('getPositionObject failed with error: ' + error);
2250    });
2251}
2252```
2253
2254### getAllObject<sup>7+</sup>
2255
2256getAllObject(callback: AsyncCallback&lt;Array&lt;FileAsset&gt;&gt;): void
2257
2258获取文件检索结果中的所有文件资产。此方法使用Callback回调来返回FileAsset结果集。
2259
2260**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
2261
2262**参数**:
2263
2264| 参数名       | 类型                                       | 必填   | 说明                   |
2265| -------- | ---------------------------------------- | ---- | -------------------- |
2266| callback | AsyncCallback&lt;Array&lt;[FileAsset](#fileasset7)&gt;&gt; | 是    | 异步返回FileAsset列表之后的回调 |
2267
2268**示例**:
2269
2270```js
2271async function example() {
2272    let fileKeyObj = mediaLibrary.FileKey;
2273    let imageType = mediaLibrary.MediaType.IMAGE;
2274    let getImageOp = {
2275        selections: fileKeyObj.MEDIA_TYPE + '= ?',
2276        selectionArgs: [imageType.toString()],
2277        order: fileKeyObj.DATE_ADDED + ' DESC',
2278    };
2279    let fetchFileResult = await media.getFileAssets(getImageOp);
2280    fetchFileResult.getAllObject((error, fileAssetList) => {
2281        if (error) {
2282           console.error('getAllObject failed with error: ' + error);
2283           return;
2284        }
2285        for (let i = 0; i < fetchFileResult.getCount(); i++) {
2286            console.info('getAllObject fileAssetList ' + i + ' displayName: ' + fileAssetList[i].displayName);
2287        }
2288        fetchFileResult.close();
2289    })
2290}
2291```
2292
2293### getAllObject<sup>7+</sup>
2294
2295getAllObject(): Promise&lt;Array&lt;FileAsset&gt;&gt;
2296
2297获取文件检索结果中的所有文件资产。此方法使用Promise来返回FileAsset结果集。
2298
2299**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
2300
2301**返回值**:
2302
2303| 类型                                     | 说明                  |
2304| ---------------------------------------- | --------------------- |
2305| Promise&lt;Array&lt;[FileAsset](#fileasset7)&gt;&gt; | 返回FileAsset对象列表 |
2306
2307**示例**:
2308
2309```js
2310async function example() {
2311    let fileKeyObj = mediaLibrary.FileKey;
2312    let imageType = mediaLibrary.MediaType.IMAGE;
2313    let getImageOp = {
2314        selections: fileKeyObj.MEDIA_TYPE + '= ?',
2315        selectionArgs: [imageType.toString()],
2316        order: fileKeyObj.DATE_ADDED + ' DESC',
2317    };
2318    let fetchFileResult = await media.getFileAssets(getImageOp);
2319    fetchFileResult.getAllObject().then((fileAssetList) => {
2320        for (let i = 0; i < fetchFileResult.getCount(); i++) {
2321            console.info('getAllObject fileAssetList ' + i + ' displayName: ' + fileAssetList[i].displayName);
2322        }
2323        fetchFileResult.close();
2324    }).catch((error) => {
2325        console.error('getAllObject failed with error: ' + error);
2326    });
2327}
2328```
2329
2330## Album<sup>7+</sup>
2331
2332实体相册
2333
2334### 属性
2335
2336**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.MediaLibrary.Core
2337
2338| 名称           | 类型    | 可读   | 可写   | 说明      |
2339| ------------ | ------ | ---- | ---- | ------- |
2340| albumId | number | 是    | 否    | 相册编号    |
2341| albumName | string | 是    | 是    | 相册名称    |
2342| albumUri<sup>8+</sup> | string | 是    | 否    | 相册Uri   |
2343| dateModified | number | 是    | 否    | 修改日期    |
2344| count<sup>8+</sup> | number | 是    | 否    | 相册中文件数量 |
2345| relativePath<sup>8+</sup> | string | 是    | 否    | 相对路径    |
2346| coverUri<sup>8+</sup> | string | 是    | 否    | 封面文件Uri |
2347
2348### commitModify<sup>8+</sup>
2349
2350commitModify(callback: AsyncCallback&lt;void&gt;): void
2351
2352更新相册属性修改到数据库中。
2353
2354**需要权限**:ohos.permission.READ_MEDIA, ohos.permission.WRITE_MEDIA
2355
2356**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
2357
2358**参数**:
2359
2360| 参数名   | 类型                      | 必填 | 说明       |
2361| -------- | ------------------------- | ---- | ---------- |
2362| callback | AsyncCallback&lt;void&gt; | 是   | 回调返回空 |
2363
2364**示例**:
2365
2366```js
2367async function example() {
2368  // 获取相册需要先预置相册和资源,示例代码为预置的新建相册1。
2369  let AlbumNoArgsfetchOp = {
2370    selections: mediaLibrary.FileKey.ALBUM_NAME + '= ?',
2371    selectionArgs: ['新建相册1'],
2372  };
2373  const albumList = await media.getAlbums(AlbumNoArgsfetchOp);
2374  const album = albumList[0];
2375  album.albumName = 'hello';
2376  album.commitModify((error) => {
2377    if (error) {
2378      console.error('commitModify failed with error: ' + error);
2379      return;
2380    }
2381    console.info('commitModify successful.');
2382  })
2383}
2384```
2385
2386### commitModify<sup>8+</sup>
2387
2388commitModify(): Promise&lt;void&gt;
2389
2390更新相册属性修改到数据库中。
2391
2392**需要权限**:ohos.permission.READ_MEDIA, ohos.permission.WRITE_MEDIA
2393
2394**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
2395
2396**返回值**:
2397
2398| 类型                  | 说明           |
2399| ------------------- | ------------ |
2400| Promise&lt;void&gt; | Promise调用返回空 |
2401
2402**示例**:
2403
2404```js
2405async function example() {
2406  // 获取相册需要先预置相册和资源,示例代码为预置的新建相册1。
2407  let AlbumNoArgsfetchOp = {
2408    selections: mediaLibrary.FileKey.ALBUM_NAME + '= ?',
2409    selectionArgs: ['新建相册1'],
2410  };
2411  const albumList = await media.getAlbums(AlbumNoArgsfetchOp);
2412  const album = albumList[0];
2413  album.albumName = 'hello';
2414  album.commitModify().then(() => {
2415    console.info('commitModify successfully');
2416  }).catch((error) => {
2417    console.error('commitModify failed with error: ' + error);
2418  });
2419}
2420```
2421
2422### getFileAssets<sup>7+</sup>
2423
2424getFileAssets(callback: AsyncCallback&lt;FetchFileResult&gt;): void
2425
2426按照检索条件获取相册中的文件。此方法使用Callback回调来返回文件结果集。
2427
2428**需要权限**:ohos.permission.READ_MEDIA
2429
2430**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
2431
2432**参数**:
2433
2434| 参数名   | 类型                                                | 必填 | 说明                                |
2435| -------- | --------------------------------------------------- | ---- | ----------------------------------- |
2436| callback | AsyncCallback<[FetchFileResult](#fetchfileresult7)> | 是   | 异步返回FetchFileResult之后的回调。 |
2437
2438**示例**:
2439
2440```js
2441async function example() {
2442  // 获取相册需要先预置相册和资源,示例代码为预置的新建相册1。
2443  let AlbumNoArgsfetchOp = {
2444    selections: mediaLibrary.FileKey.ALBUM_NAME + '= ?',
2445    selectionArgs: ['新建相册1'],
2446  };
2447  // 获取符合检索要求的相册,返回相册列表。
2448  const albumList = await media.getAlbums(AlbumNoArgsfetchOp);
2449  const album = albumList[0];
2450  // 取到相册列表中的一个相册,获取此相册中所有符合媒体检索选项的媒体资源。
2451  album.getFileAssets((error, fetchFileResult) => {
2452    if (error) {
2453      console.error('album getFileAssets failed with error: ' + error);
2454      return;
2455    }
2456    let count = fetchFileResult.getCount();
2457    console.info('album getFileAssets successfully, count: ' + count);
2458    fetchFileResult.close();
2459  });
2460}
2461```
2462
2463### getFileAssets<sup>7+</sup>
2464
2465getFileAssets(options: MediaFetchOptions, callback: AsyncCallback&lt;FetchFileResult&gt;): void
2466
2467按照检索条件获取相册中的文件。此方法使用Callback回调来返回文件结果集。
2468
2469**需要权限**:ohos.permission.READ_MEDIA
2470
2471**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
2472
2473**参数**:
2474
2475| 参数名   | 类型                                                | 必填 | 说明                                |
2476| -------- | --------------------------------------------------- | ---- | ----------------------------------- |
2477| options  | [MediaFetchOptions](#mediafetchoptions7)            | 是   | 媒体检索选项。                      |
2478| callback | AsyncCallback<[FetchFileResult](#fetchfileresult7)> | 是   | 异步返回FetchFileResult之后的回调。 |
2479
2480**示例**:
2481
2482```js
2483async function example() {
2484  // 获取相册需要先预置相册和资源,示例代码为预置的新建相册1。
2485  let AlbumNoArgsfetchOp = {
2486    selections: mediaLibrary.FileKey.ALBUM_NAME + '= ?',
2487    selectionArgs: ['新建相册1'],
2488  };
2489  let fileNoArgsfetchOp = {
2490    selections: '',
2491    selectionArgs: [],
2492  }
2493  // 获取符合检索要求的相册,返回相册列表
2494  const albumList = await media.getAlbums(AlbumNoArgsfetchOp);
2495  const album = albumList[0];
2496  // 取到相册列表中的一个相册,获取此相册中所有符合媒体检索选项的媒体资源
2497  album.getFileAssets(fileNoArgsfetchOp, (error, fetchFileResult) => {
2498    if (error) {
2499      console.error('album getFileAssets failed with error: ' + error);
2500      return;
2501    }
2502    let count = fetchFileResult.getCount();
2503    console.info('album getFileAssets successfully, count: ' + count);
2504    fetchFileResult.close();
2505  });
2506}
2507```
2508
2509### getFileAssets<sup>7+</sup>
2510
2511 getFileAssets(options?: MediaFetchOptions): Promise&lt;FetchFileResult&gt;
2512
2513按照检索条件获取相册中的文件。此方法使用异步Promise来返回文件结果集。
2514
2515**需要权限**:ohos.permission.READ_MEDIA
2516
2517**系统能力**:SystemCapability.Multimedia.MediaLibrary.Core
2518
2519**参数**:
2520
2521| 参数名  | 类型                                     | 必填 | 说明           |
2522| ------- | ---------------------------------------- | ---- | -------------- |
2523| options | [MediaFetchOptions](#mediafetchoptions7) | 否   | 媒体检索选项。 |
2524
2525**返回值**:
2526
2527| 类型                                          | 说明                      |
2528| --------------------------------------------- | ------------------------- |
2529| Promise<[FetchFileResult](#fetchfileresult7)> | 返回FetchFileResult对象。 |
2530
2531**示例**:
2532
2533```js
2534async function example() {
2535  // 获取相册需要先预置相册和资源,示例代码为预置的新建相册1。
2536  let AlbumNoArgsfetchOp = {
2537    selections: mediaLibrary.FileKey.ALBUM_NAME + '= ?',
2538    selectionArgs: ['新建相册1'],
2539  };
2540  let fileNoArgsfetchOp = {
2541    selections: '',
2542    selectionArgs: [],
2543  };
2544  // 获取符合检索要求的相册,返回相册列表
2545  const albumList = await media.getAlbums(AlbumNoArgsfetchOp);
2546  const album = albumList[0];
2547  // 取到相册列表中的一个相册,获取此相册中所有符合媒体检索选项的媒体资源
2548  album.getFileAssets(fileNoArgsfetchOp).then((fetchFileResult) => {
2549    let count = fetchFileResult.getCount();
2550    console.info('album getFileAssets successfully, count: ' + count);
2551    fetchFileResult.close();
2552  }).catch((error) => {
2553    console.error('album getFileAssets failed with error: ' + error);
2554  });
2555}
2556```
2557
2558## PeerInfo<sup>8+</sup>
2559
2560注册设备的信息。
2561
2562**系统接口**:此接口为系统接口。
2563
2564**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.MediaLibrary.DistributedCore
2565
2566| 名称       | 类型                       | 可读 | 可写 | 说明             |
2567| ---------- | -------------------------- | ---- | ---- | ---------------- |
2568| deviceName | string                     | 是   | 否   | 注册设备的名称   |
2569| networkId  | string                     | 是   | 否   | 注册设备的网络ID |
2570| deviceType | [DeviceType](#devicetype8) | 是   | 否   | 设备类型         |
2571| isOnline   | boolean                    | 是   | 否   | 是否在线         |
2572
2573
2574
2575## MediaType<sup>8+</sup>
2576
2577枚举,媒体类型。
2578
2579**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.MediaLibrary.Core
2580
2581| 名称  |  值 |  说明 |
2582| ----- |  ---- | ---- |
2583| FILE  |  0 | 文件 |
2584| IMAGE |  1 | 图片 |
2585| VIDEO |  2 | 视频 |
2586| AUDIO |  3 | 音频 |
2587
2588## FileKey<sup>8+</sup>
2589
2590枚举,文件关键信息。
2591
2592> **说明:**
2593> bucket_id字段在文件重命名或移动后可能会发生变化,开发者使用前需要重新获取。
2594
2595**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.MediaLibrary.Core
2596
2597| 名称          | 值              | 说明                                                       |
2598| ------------- | ------------------- | ---------------------------------------------------------- |
2599| ID            | 'file_id'             | 文件编号                                                   |
2600| RELATIVE_PATH | 'relative_path'       | 相对公共目录路径                                           |
2601| DISPLAY_NAME  | 'display_name'        | 显示名字                                                   |
2602| PARENT        | 'parent'              | 父目录id                                                   |
2603| MIME_TYPE     | 'mime_type'           | 文件扩展属性(如:image/*、video/*、file/*)                                             |
2604| MEDIA_TYPE    | 'media_type'          | 媒体类型                                                   |
2605| SIZE          | 'size'                | 文件大小(单位:字节)                                     |
2606| DATE_ADDED    | 'date_added'          | 添加日期(添加文件时间到1970年1月1日的秒数值)             |
2607| DATE_MODIFIED | 'date_modified'       | 修改日期(修改文件时间到1970年1月1日的秒数值,修改文件名不会改变此值,当文件内容发生修改时才会更新) |
2608| DATE_TAKEN    | 'date_taken'          | 拍摄日期(文件拍照时间到1970年1月1日的秒数值)             |
2609| TITLE         | 'title'               | 文件标题                                                   |
2610| ARTIST        | 'artist'              | 作者                                                       |
2611| AUDIOALBUM    | 'audio_album'         | 专辑                                                       |
2612| DURATION      | 'duration'            | 持续时间(单位:毫秒)                                       |
2613| WIDTH         | 'width'               | 图片宽度(单位:像素)                                     |
2614| HEIGHT        | 'height'              | 图片高度(单位:像素)                                     |
2615| ORIENTATION   | 'orientation'         | 图片显示方向,即顺时针旋转角度,如0,90,180。(单位:度) |
2616| ALBUM_ID      | 'bucket_id'           | 文件所归属的相册编号                                       |
2617| ALBUM_NAME    | 'bucket_display_name' | 文件所归属相册名称                                         |
2618
2619## DirectoryType<sup>8+</sup>
2620
2621枚举,目录类型。
2622
2623**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.MediaLibrary.Core
2624
2625| 名称          | 值 |  说明               |
2626| ------------- | --- | ------------------ |
2627| DIR_CAMERA    |  0 | 表示Camera文件路径 |
2628| DIR_VIDEO     |  1 |  表示视频路径       |
2629| DIR_IMAGE     |  2 | 表示图片路径       |
2630| DIR_AUDIO     |  3 | 表示音频路径       |
2631| DIR_DOCUMENTS |  4 | 表示文档路径       |
2632| DIR_DOWNLOAD  |  5 |  表示下载路径       |
2633
2634## DeviceType<sup>8+</sup>
2635
2636枚举,设备类型。
2637
2638**系统接口**:此接口为系统接口。
2639
2640**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.MediaLibrary.DistributedCore
2641
2642| 名称         |  值 | 说明       |
2643| ------------ | --- | ---------- |
2644| TYPE_UNKNOWN |  0 | 未识别设备 |
2645| TYPE_LAPTOP  |  1 | 笔记本电脑 |
2646| TYPE_PHONE   |  2 | 手机       |
2647| TYPE_TABLET  |  3 | 平板电脑   |
2648| TYPE_WATCH   |  4 | 智能手表   |
2649| TYPE_CAR     |  5 | 车载设备   |
2650| TYPE_TV      |  6 | 电视设备   |
2651
2652## MediaFetchOptions<sup>7+</sup>
2653
2654检索条件。
2655
2656**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.MediaLibrary.Core
2657
2658| 名称                    | 类型                | 可读 | 可写 | 说明                                                         |
2659| ----------------------- | ------------------- | ---- | ---- | ------------------------------------------------------------ |
2660| selections              | string              | 是   | 是   | 检索条件,使用[FileKey](#filekey8)中的枚举值作为检索条件的列名。示例:<br/>selections: mediaLibrary.FileKey.MEDIA_TYPE + '= ? OR ' + mediaLibrary.FileKey.MEDIA_TYPE + '= ?', |
2661| selectionArgs           | Array&lt;string&gt; | 是   | 是   | 检索条件的值,对应selections中检索条件列的值。<br/>示例:<br/>selectionArgs: [mediaLibrary.MediaType.IMAGE.toString(), mediaLibrary.MediaType.VIDEO.toString()], |
2662| order                   | string              | 是   | 是   | 检索结果排序方式,使用[FileKey](#filekey8)中的枚举值作为检索结果排序的列,可以用升序或降序排列。示例:<br/>升序排列:order: mediaLibrary.FileKey.DATE_ADDED + ' ASC'<br/>降序排列:order: mediaLibrary.FileKey.DATE_ADDED + ' DESC' |
2663| uri<sup>8+</sup>        | string              | 是   | 是   | 文件URI                                                      |
2664| networkId<sup>8+</sup>  | string              | 是   | 是   | 注册设备网络ID                                               |
2665| extendArgs<sup>8+</sup> | string              | 是   | 是   | 扩展的检索参数,目前没有扩展检索参数                         |
2666
2667## Size<sup>8+</sup>
2668
2669图片尺寸。
2670
2671**系统能力:**  以下各项对应的系统能力均为SystemCapability.Multimedia.MediaLibrary.Core
2672
2673| 名称     | 类型     | 可读   | 可写   | 说明       |
2674| ------ | ------ | ---- | ---- | -------- |
2675| width  | number | 是    | 是    | 宽(单位:像素) |
2676| height | number | 是    | 是    | 高(单位:像素) |
2677
2678## MediaAssetOption
2679
2680媒体资源选项。
2681
2682**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.MediaLibrary.Core
2683
2684
2685| 名称         | 类型   | 可读 | 可写 | 说明                                                         |
2686| ------------ | ------ | ---- | ---- | ------------------------------------------------------------ |
2687| src          | string | 是   | 是   | 本地文件应用沙箱路径。                                       |
2688| mimeType     | string | 是   | 是   | 媒体MIME(Multipurpose&nbsp;Internet&nbsp;Mail&nbsp;Extensions)类型。<br/>包括:'image/\*'、'video/\*'、'audio/\*'、 'file\*'。 |
2689| relativePath | string | 是   | 是   | 自定义媒体资源保存位置,例:Pictures/ 不填则保存到默认路径。 <br/> image类型默认路径Pictures/ <br/> video类型默认路径Videos/ <br/> audio类型默认路径Audios/ <br/> file类型默认路径Documents/ 。 |
2690
2691## MediaSelectOption
2692
2693媒体资源类型选项。
2694
2695**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.MediaLibrary.Core
2696
2697| 名称    | 类型     | 可读 | 可写 | 说明                   |
2698| ----- | ------ | ---- | ---- | -------------------- |
2699| type  | 'image' &#124; 'video' &#124; 'media' | 是    | 是  | 媒体类型,包括:image, video, media,当前仅支持media类型 |
2700| count | number | 是    | 是  | 可以选择媒体数量的最大值,count = 1表示单选,count大于1表示多选。            |
2701
2702