uni-app开发鸿蒙应用,使用uts插件授权麦克风权限之后,webview加载的h5仍然无法调起录音功能

发布于 1周前 作者 phonegap100 来自 Uni-App

uni-app开发鸿蒙应用,使用uts插件授权麦克风权限之后,webview加载的h5仍然无法调起录音功能

编辑器版本
4.29
5 回复

HBuilderX 4.32.2024110103-alpha 已修复。

更多关于uni-app开发鸿蒙应用,使用uts插件授权麦克风权限之后,webview加载的h5仍然无法调起录音功能的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


4.32版本运行真机调试报错 17:32:15.146 安装鸿蒙工程的依赖 … 17:32:16.141 ohpm INFO: MetaDataFetcher fetching meta info of package ‘@uni_modules/uni-payment-alipay’ from https://ohpm.openharmony.cn/ohpm/ ohpm INFO: MetaDataFetcher fetching meta info of package ‘@dcloudio/uni-app-runtime’ from https://ohpm.openharmony.cn/ohpm/ ohpm INFO: MetaDataFetcher fetching meta info of package ‘@ohos/hypium’ from https://ohpm.openharmony.cn/ohpm/ ohpm ERROR: missing: @dcloudio/uts-harmony@E:\hongmeng\aihuihua\ai_painting\unpackage\debug\app-harmony-2f573459\entry\src\main\ets\uts, required by @ ohpm ERROR: Found exception: Error: Fetch local folder package error, E:\hongmeng\aihuihua\ai_painting\unpackage\debug\app-harmony-2f573459\entry\src\main\ets\uts does not exist., reached retry limit or non retryable error encountered. ohpm ERROR: ERUNNING execute tasks failed, Error: Fetch local folder package error, E:\hongmeng\aihuihua\ai_painting\unpackage\debug\app-harmony-2f573459\entry\src\main\ets\uts does not exist. ohpm ERROR: missing: @dcloudio/uni-app-harmony@E:\hongmeng\aihuihua\ai_painting\unpackage\debug\app-harmony-2f573459\entry\src\main\ets\uni-app-harmony, required by @ ohpm ERROR: Found exception: Error: Fetch local folder package error, E:\hongmeng\aihuihua\ai_painting\unpackage\debug\app-harmony-2f573459\entry\src\main\ets\uni-app-harmony does not exist., reached retry limit or non retryable error encountered. ohpm ERROR: missing: @dcloudio/uni-app-harmony-framework@E:\hongmeng\aihuihua\ai_painting\unpackage\debug\app-harmony-2f573459\entry\src\main\resources\rawfile\uni-app, required by @ ohpm ERROR: Found exception: Error: Fetch local folder package error, E:\hongmeng\aihuihua\ai_painting\unpackage\debug\app-harmony-2f573459\entry\src\main\resources\rawfile\uni-app does not exist., reached retry limit or non retryable error encountered. ohpm ERROR: Install failed, detail: Error: Fetch local folder package error, E:\hongmeng\aihuihua\ai_painting\unpackage\debug\app-harmony-2f573459\entry\src\main\ets\uts does not exist. 17:32:16.141 安装鸿蒙工程依赖失败

在安卓手机上面测试,开启麦克风权限后,h5录音就可以正常使用;但在鸿蒙app上面通过打印输出,发现即便授权麦克风权限之后,h5上面还是无法调起录音功能

下个alpha版本修复此问题

在uni-app开发鸿蒙应用时,如果你已经使用了uts插件来授权麦克风权限,但webview加载的H5页面仍然无法调起录音功能,可能是因为权限的传递或webview配置不正确。以下是一个简要的代码示例和检查步骤,帮助你解决这个问题。

1. 确保权限申请和授权

首先,确保你的应用在manifest.json中已经声明了麦克风权限,并且在代码中正确申请和授权。

manifest.json

"module": {
    "permissions": [
        "ohos.permission.RECORD_AUDIO"
    ]
}

在代码中申请权限

if (uni.getSystemInfoSync().platform === 'harmonyos') {
    uni.authorize({
        scope: 'scope.userLocation', // 示例,实际应为麦克风权限,但uni-app的API可能不支持直接指定麦克风
        success() {
            console.log('麦克风权限申请成功');
        },
        fail() {
            console.error('麦克风权限申请失败');
        }
    });
}

注意:uni-app的uni.authorize可能不支持直接指定麦克风权限,这里是一个示例,你可能需要使用鸿蒙原生的API来申请。

2. 配置webview

确保你的webview组件已经正确配置,可以接收并处理麦克风权限。

在页面中加载webview

<web-view id="webview" src="https://your-h5-page.com"></web-view>

在JS中处理权限传递(假设鸿蒙提供了相关API) 由于uni-app的webview组件可能不支持直接传递权限,你可能需要在鸿蒙原生代码中处理这部分逻辑。以下是一个假设性的示例,说明如何在原生代码中处理权限:

// 假设这是鸿蒙原生代码
import featureAbility from '@ohos.ability.FeatureAbility';

featureAbility.requestPermissionsFromUser([
    "ohos.permission.RECORD_AUDIO"
], (err, granted) => {
    if (granted) {
        // 权限授予成功,配置webview以允许使用麦克风
        let webview = document.getElementById('webview');
        webview.setAttribute('allow-audio', 'true'); // 假设的属性,实际需根据鸿蒙API调整
    } else {
        console.error('麦克风权限被拒绝');
    }
});

3. H5页面调起录音

确保H5页面中的录音功能代码正确,且能够检测到麦克风权限。

H5页面录音代码示例

navigator.mediaDevices.getUserMedia({ audio: true })
    .then(stream => {
        console.log('麦克风已启用', stream);
        // 开始录音逻辑
    })
    .catch(err => {
        console.error('无法访问麦克风', err);
    });

总结

由于uni-app对鸿蒙平台的支持可能有限,你可能需要结合鸿蒙原生开发来实现完整的权限管理和webview配置。上述代码和步骤提供了一个基本的框架,你可能需要根据实际情况进行调整和优化。

回到顶部