HarmonyOS 鸿蒙Next中@react-native-oh-tpl/react-native-webview组件每次录音都弹窗

HarmonyOS 鸿蒙Next中@react-native-oh-tpl/react-native-webview组件每次录音都弹窗 今天测试提了个录音时候的bug,在webview里的录音,每次按录音按钮,都会弹这个窗口确定,无论你是否在应用设置里是否开启了麦克风权限。

cke_573.png

分析了一会源码后,我把源码屏蔽了一部分,就完全符合我们业务需要了。

cke_3112.png

接着想这样写可能太潦草,继续复制了一些代码过来,修改如下

cke_9751.png

cke_10379.png


更多关于HarmonyOS 鸿蒙Next中@react-native-oh-tpl/react-native-webview组件每次录音都弹窗的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

在HarmonyOS Next中,@react-native-oh-tpl/react-native-webview组件录音时频繁弹窗是由于系统权限管理机制所致。鸿蒙系统要求每次调用麦克风等敏感权限时需显式获取用户授权。该行为与WebView内部实现及鸿蒙权限模型相关,可能涉及组件未正确处理权限请求或缓存授权状态。建议检查组件版本是否适配鸿蒙Next的权限API,并确认配置中已正确声明麦克风权限。

更多关于HarmonyOS 鸿蒙Next中@react-native-oh-tpl/react-native-webview组件每次录音都弹窗的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS Next中,@react-native-oh-tpl/react-native-webview组件每次录音时弹出权限确认窗口,是由于系统默认的权限请求机制导致的。即使应用已获得麦克风权限,WebView内部仍可能触发额外的权限检查。

从你的修改来看,你通过重写onPermissionRequest方法并直接调用request.grant(),跳过了系统的权限弹窗,这确实解决了问题。这种做法是合理的,因为应用已经获得了麦克风权限,无需重复确认。

不过,建议在onPermissionRequest中加入权限类型判断,仅对麦克风权限进行自动授权,避免影响其他权限(如摄像头、位置等)的正常流程。例如:

onPermissionRequest = (request) => {
  if (request.getResources().includes('android.webkit.resource.MICROPHONE')) {
    request.grant(request.getResources());
  }
};

这样可以确保仅在麦克风权限上绕过弹窗,保持其他资源权限的默认行为。

回到顶部