Android:WebView-未为会议启用摄像头和麦克风

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android:WebView-未为会议启用摄像头和麦克风相关的知识,希望对你有一定的参考价值。

我们连接到https://meet.jit.si进行视频会议。如果我们在android设备上使用了Chrome浏览器(已在Android 7和10上进行了测试),则可以在启用Camera和Mic的情况下加入。能够同时打开和关闭它们。但是,如果我们使用Webview尝试相同的操作,则即使打开网站,我们甚至都没有收到允许访问的提示,并且在尝试打开它们时出现“无法访问摄像头/麦克风”错误。

这是我们的代码。

清单

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />

获得加载时的运行时权限

    String[] permissions =
            {Manifest.permission.READ_EXTERNAL_STORAGE,
             Manifest.permission.WRITE_EXTERNAL_STORAGE,
             Manifest.permission.INTERNET,
             Manifest.permission.RECORD_AUDIO,
             Manifest.permission.CAMERA};

    ActivityCompat.requestPermissions(
            this,
            permissions,
            1010);

将网页加载到WebView中

String url = "https://meet.jit.si/testingconf49854";
WebView webView = findViewById(R.id.webView);
WebSettings mWebSettings = webView.getSettings();
mWebSettings.setLoadsImagesAutomatically(true);
mWebSettings.setBlockNetworkLoads(false);
mWebSettings.setjavascriptEnabled(true);
mWebSettings.setLoadWithOverviewMode(true);
mWebSettings.setUseWideViewPort(false);
mWebSettings.setTextZoom(70);
mWebSettings.setCacheMode( WebSettings.LOAD_NO_CACHE );
mWebSettings.setUserAgentString("Mozilla/5.0 (Linux; Android 5.1.1; Nexus 5 Build/LMY48B; wv) AppleWebKit/537.36 (Khtml, like Gecko) Version/4.0 Chrome/43.0.2357.65 Mobile Safari/537.36");
webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
webView.setScrollbarFadingEnabled(true);

Map<String, String> noCacheHeaders = new HashMap<String, String>(2);
noCacheHeaders.put("Pragma", "no-cache");
noCacheHeaders.put("Cache-Control", "no-cache");
webView.loadUrl(url, noCacheHeaders);

[请让我们知道我们在这里缺少什么。感谢您的帮助。

答案

获得这些权限后,您需要像这样在onPermissionRequest中覆盖WebChromeClient

@Override
public void onPermissionRequest(final PermissionRequest request) {
    request.grant(request.getResources());
}

以上是关于Android:WebView-未为会议启用摄像头和麦克风的主要内容,如果未能解决你的问题,请参考以下文章

如何在android的webview中启用前置摄像头

用webview做的android客户端怎样调用摄像头拍照

Android WebView 和 webrtc hello world 示例

未为任务启用 Gradle 构建缓存

Android:WebView 中的网络摄像头错误(摄像头权限不起作用)

未为 Firebase 云功能启用 Cors