Android WebView运行WebRTC出现CheckMediaAccessPermission报错如何处理?
报错优先级判断
你当前使用的onPermissionRequest授权代码逻辑正确,视频流能正常传输就已经验证了权限流程没有问题,这条报错不需要重点排查,属于Chromium WebView的已知良性日志输出,不会影响实际功能。
报错的底层原因是WebContentsDelegate::CheckMediaAccessPermission是Chromium给原生层预留的媒体权限预校验钩子,安卓官方默认没有开放该接口的实现,日志只是提示底层没有命中这个预校验逻辑,不代表实际权限被拒绝。
消除报错的解决方案
可以按以下顺序尝试:
- 提前在原生层申请动态权限,不要等Web端发起权限请求时才处理。先确保
AndroidManifest.xml中已经声明了必备权限:
在加载WebView对应页面之前,先调用安卓动态权限申请接口,拿到用户授予的相机、麦克风权限后再执行页面加载逻辑,绝大多数场景下可以消除这条报错。<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> - 如果提前申请权限后仍然有日志输出,可以直接过滤该条log即可,不需要做额外的代码侵入修改,该日志本身不会带来任何性能或功能问题。
- 可选补充配置,给WebView添加以下通用设置可以减少相关冗余日志输出:
webView.settings.apply { javaScriptEnabled = true domStorageEnabled = true mediaPlaybackRequiresUserGesture = false allowFileAccess = true } // 安卓12及以上系统建议添加 webView.setWebContentsDebuggingEnabled(BuildConfig.DEBUG)
内容的提问来源于stack exchange,提问作者Sujith S Manjavana
相关产品推荐
相关产品推荐

