Xamarin.Forms中WebView启用音视频权限:后续步骤及类注册咨询
Xamarin.Forms WebView摄像头/麦克风权限配置补全步骤
- 必须注册自定义渲染器:在Droid项目的渲染器类顶部添加绑定特性,这是关联Forms层控件与原生渲染器的核心步骤,不注册的话自定义逻辑不会生效:
把代码里的类名替换成你实际创建的类名称即可。[assembly: ExportRenderer(typeof(你的Forms自定义WebView类), typeof(你的Droid端渲染器类))] - 确认Forms端有对应自定义WebView类:在共享项目(或PCL)中创建一个继承自
WebView的空类(比如命名为CameraMicEnabledWebView),作为渲染器的目标绑定类型,否则渲染器找不到要替换的控件。 - 动态请求运行时权限:Android 6.0及以上系统仅在
AndroidManifest.xml声明CAMERA、RECORD_AUDIO、MODIFY_AUDIO_SETTINGS权限还不够,需要在代码中主动请求权限。可以在页面初始化或渲染器初始化阶段调用:
务必等用户授权通过后,再加载需要调用摄像头/麦克风的网页。await Permissions.RequestAsync(new[] { Permission.Camera, Permission.Microphone }); - 验证WebChromeClient权限回调逻辑:在渲染器的
OnElementChanged方法中,要为WebView设置自定义WebChromeClient,并重写OnPermissionRequest方法处理权限请求:public override void OnPermissionRequest(PermissionRequest request) { // 可添加判断逻辑,仅允许摄像头、麦克风相关权限 if (request.GetResources().Contains(PermissionRequest.ResourceVideoCapture) || request.GetResources().Contains(PermissionRequest.ResourceAudioCapture)) { request.Grant(request.GetResources()); } else { request.Deny(); } }
内容的提问来源于stack exchange,提问作者Obsidian Delta
相关产品推荐
相关产品推荐

