You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

安卓webview调用mediaDevices.getUserMedia权限被拒问题求助

Android WebView调用getUserMedia权限被拒遗漏配置项汇总

WebView层的权限控制和系统应用权限是独立的,哪怕应用已经拿到系统相机权限,也需要完成以下WebView专属配置:

  • 首先开启WebView基础媒体相关配置,在WebSettings中添加以下设置:
    WebSettings webSettings = webView.getSettings();
    // 开启JS支持,getUserMedia依赖JS调用
    webSettings.setJavaScriptEnabled(true);
    // 关闭媒体播放需要用户手势的限制,避免自动播放失败
    webSettings.setMediaPlaybackRequiresUserGesture(false);
    // 允许访问本地文件,如果你加载的是本地网页资源需要开启
    webSettings.setAllowFileAccess(true);
    // 允许混合内容,如果你加载的是HTTP页面需要开启(仅测试用,生产环境建议使用HTTPS)
    webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
    
  • 重写WebChromeClient的onPermissionRequest方法,放行网页发起的媒体权限申请
    这是最容易被忽略的核心配置点,安卓原生WebView默认会拒绝所有网页发起的权限请求,和应用是否有系统权限无关
    webView.setWebChromeClient(new WebChromeClient() {
        @Override
        public void onPermissionRequest(final PermissionRequest request) {
            // 直接放行申请的所有权限,也可以根据request.getResources()过滤只放行媒体相关权限
            request.grant(request.getResources());
        }
    });
    
  • 检查AndroidManifest.xml配置,确保添加了所有必要权限
    <!-- 基础网络权限,加载网页必须 -->
    <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" />
    
    同时给WebView所在的Activity开启硬件加速,避免视频渲染异常:
    <activity
        android:name=".YourWebViewActivity"
        android:hardwareAccelerated="true" />
    
  • 如果你使用的是Ionic/Cordova/Capacitor等跨端框架的WebView,还需要额外在框架配置文件中开启媒体访问权限,比如Cordova需要在config.xml中添加:
    <preference name="AndroidInsecureFileModeEnabled" value="true" />
    <preference name="MediaCapture" value="true" />
    

内容的提问来源于stack exchange,提问作者Nelah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 05:15:04