首页 > 解决方案 > 无法访问 android webview 上的本地媒体

问题描述

我正在尝试制作一个包含 webRTC 的 webview,但是当我尝试加入以访问房间时,我收到以下错误:“无法访问本地媒体。错误名称是 NotAllowedError。Countinuing without sendig to stream” . 提前致谢。

这是一个截图

@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"/>

标签: androidwebviewwebrtc

解决方案


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

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

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


推荐阅读