申请HarmonyOS.permission.READ_AUDIO权限后如何一次性获取本地全部音频的uri

申请HarmonyOS.permission.READ_AUDIO权限后如何一次性获取本地全部音频的uri 我想获取全部音频数据,已经申请了ohos.permission.READ_AUDIO权限,但是没有找到接口可以一次性获取到全部音频的信息。AudioViewPicker只能一个个选中,我希望授权后一次拿到全部音频信息。

有没有像图片和视频那样的接口

getAssets

getAssets(options: FetchOptions, callback: AsyncCallback<FetchResult<PhotoAsset>>): void

获取图片和视频资源,使用callback方式返回结果。


更多关于申请HarmonyOS.permission.READ_AUDIO权限后如何一次性获取本地全部音频的uri的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

好像只能自己选

更多关于申请HarmonyOS.permission.READ_AUDIO权限后如何一次性获取本地全部音频的uri的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


目前HarmonyOS NEXT系统好像没有提供直接获取全部音频信息的接口

在HarmonyOS中,申请HarmonyOS.permission.READ_AUDIO权限后,可以通过DataAbilityHelperDataAbilityPredicates来一次性获取本地全部音频的URI。首先,确保已经在config.json中声明了READ_AUDIO权限,并且在运行时动态申请了该权限。接下来,使用DataAbilityHelperquery方法,结合DataAbilityPredicates来查询音频文件。示例代码如下:

import dataAbility from '@ohos.data.dataAbility';
import featureAbility from '@ohos.ability.featureAbility';

let helper = dataAbility.createDataAbilityHelper(featureAbility.getContext());
let predicates = new dataAbility.DataAbilityPredicates();
predicates.orderByAsc("_display_name"); // 按名称排序

helper.query("dataability:///media/audio", ["_data", "_display_name", "_size"], predicates)
    .then((resultSet) => {
        if (resultSet.rowCount > 0) {
            resultSet.goToFirstRow();
            do {
                let uri = resultSet.getRowValueByIndex(0); // 获取URI
                console.log("Audio URI: " + uri);
            } while (resultSet.goToNextRow());
        } else {
            console.log("No audio files found.");
        }
    })
    .catch((error) => {
        console.error("Failed to query audio files: " + error);
    });

这段代码通过query方法查询dataability:///media/audio路径下的音频文件,并获取每个音频文件的URI。DataAbilityPredicates用于定义查询条件,如排序方式。查询结果通过ResultSet对象返回,可以遍历获取每个音频文件的URI。

回到顶部