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

少年恃险若平地,独倚长剑凌清秋。这篇文章主要讲述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);

[请让我们知道我们在这里缺少什么。感谢您的帮助。
答案【Android(WebView-未为会议启用摄像头和麦克风)】获得这些权限后,您需要像这样在onPermissionRequest中覆盖WebChromeClient
@Override public void onPermissionRequest(final PermissionRequest request) { request.grant(request.getResources()); }


    推荐阅读