Xamarin.Forms Android中WebView无法调用摄像头问题排查
解决Xamarin.Forms Android原生WebView无法调用摄像头的问题
我之前也碰到过几乎一模一样的问题——Xamarin.Forms里Android原生WebView调用摄像头没反应,但Chrome和iOS的WKWebView都正常,而且其他模块摄像头权限也没问题。结合你的情况,问题大概率出在原生WebView的权限请求处理和配置缺失上,下面是我验证有效的解决方案:
1. 自定义WebChromeClient处理权限请求
Android的WebView在调用摄像头这类媒体设备时,不会自动授权权限请求,必须通过自定义WebChromeClient来手动授予。你需要在Android项目里创建这个类:
using Android.Webkit; public class CameraEnabledWebChromeClient : WebChromeClient { public override void OnPermissionRequest(PermissionRequest request) { // 这里可以校验请求的来源网站,确保是你的目标站点 if (request.Origin.ToString().StartsWith("https://你的目标网站域名")) { // 授予请求的所有权限(这里主要是摄像头权限) request.Grant(request.GetResources()); } else { base.OnPermissionRequest(request); } } }
2. 给WebView配置必要设置并绑定自定义ChromeClient
接下来需要通过自定义渲染器,给Xamarin.Forms的WebView设置上述ChromeClient和必要的WebView参数:
using Android.Content; using Android.Webkit; using Xamarin.Forms; using Xamarin.Forms.Platform.Android; [assembly: ExportRenderer(typeof(WebView), typeof(CameraEnabledWebViewRenderer))] namespace 你的Android项目命名空间 { public class CameraEnabledWebViewRenderer : WebViewRenderer { public CameraEnabledWebViewRenderer(Context context) : base(context) { } protected override void OnElementChanged(ElementChangedEventArgs<WebView> e) { base.OnElementChanged(e); if (Control != null) { var webView = Control as Android.Webkit.WebView; // 启用JavaScript(网站调用摄像头依赖JS) webView.Settings.JavaScriptEnabled = true; // 允许文件访问(摄像头拍摄的照片需要文件读写) webView.Settings.AllowFileAccess = true; // 启用DOM存储(部分网站的媒体功能依赖这个) webView.Settings.DomStorageEnabled = true; // 取消媒体播放需要用户手势的限制(避免摄像头调用被拦截) webView.Settings.MediaPlaybackRequiresUserGesture = false; // 绑定自定义的ChromeClient处理权限请求 webView.SetWebChromeClient(new CameraEnabledWebChromeClient()); } } } }
3. 额外注意事项
- 确认你的目标网站是HTTPS协议:Android的WebView对HTTP站点的媒体权限限制更严格,即使配置了上述内容也可能无法调用摄像头。
- 动态权限检查:虽然你说其他模块已经正常使用摄像头,但可以在渲染器初始化时再确认一次权限(比如
Manifest.Permission.Camera和Manifest.Permission.RecordAudio如果需要的话),确保权限状态是授予的。
按这个步骤配置后,Android原生WebView应该就能正常调用摄像头了,我当时就是这么解决的。
内容的提问来源于stack exchange,提问作者Mark Erickson
相关产品推荐
相关产品推荐

