android - 无法访问 android webview 上的本地媒体

标签 android webview webrtc

我正在尝试创建一个包含 webRTC 的 webview,但是当我尝试加入以访问房间时,出现以下错误:“无法访问本地媒体。错误名称是 NotAllowedError。在没有发送信号的情况下继续流式传输”。提前致谢。

Here is a screenshot

@SuppressLint("SetJavaScriptEnable")
private void initWebView(){
    webView = findViewById(R.id.WebViewID);
    webView.setWebChromeClient(new WebChromeClient(){

        @Nullable
        @Override
        public Bitmap getDefaultVideoPoster() {
            return Bitmap.createBitmap(10, 10, Bitmap.Config.ARGB_8888);
        }
    });

    WebSettings webSettings = webView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    webSettings.setUseWideViewPort(true);
    webSettings.setLoadWithOverviewMode(true);
    webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
    webSettings.setMediaPlaybackRequiresUserGesture(false);
    webView.loadUrl(url);
}


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

最佳答案

仅通过以下方式在 list 中声明权限是不够的:

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

您必须要求用户在代码中授予这些权限 (reference),或者手动转到设备中的权限设置并授予所需的应用程序 Camera麦克风权限。这样做应该可以解决问题。

关于android - 无法访问 android webview 上的本地媒体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51211370/

相关文章:

Android WebView 找不到 TracingController

java - 从 evaluateJavascript getElementById 返回的字符串带有斜杠和引号

android - Android 4.0.3 中的 PhoneGap + JQM 应用程序中断

android - 谷歌+登录 : Activity won't start

android - 如何给按钮加上边框和点击效果?

Android Emulator WebView - Chrome 远程设备中的 'No Browser Detected'

android - 测量 Android 应用程序的帧渲染时间

webrtc - 典型 webrtc 用例的序列图(如文本、视频、音频)

webrtc - WebRTC 中的两个端点是否都需要 STUN/TURN 配置/凭证

android - 将 PDF 转换为图像(具有适当的格式)