Android如何允许H5网页调用麦克风

222 阅读1分钟

首先H5调用下面方法检查音频是否可用

navigator.mediaDevices
    .getUserMedia({ audio: true })
    .then(function (stream) {
      /* 使用这个 stream stream */
      console.log('可用音频', stream)
    })
    .catch(function (err) {
      /* 处理 error */
      console.log('不可用音频', err)
    })

ps:在IOS,微信小程序,浏览器里面H5可以直接调用录音权限,系统会出授权弹窗。在Android中权限默认是关闭的,上述方法一直是走的catch

解决方法:

// 安卓端需要开启下面权限
android.permission.RECORD_AUDIO 和 android.permission.MODIFY_AUDIO_SETTINGS
// 并且重写webview中的方法
myWebView.setWebChromeClient(new WebChromeClient() {
            @Override
            public void onProgressChanged(WebView view, int newProgress) {
                super.onProgressChanged(view, newProgress);
            }

            @Override
            public void onPermissionRequest(PermissionRequest request) {
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                    //直接同意即可     deny是拒绝
                    request.grant(request.getResources());
                }
            }
        });