Permissions Management for Media Capture in HybridWebView (Android)
- Dominant language
- C#
- Stars
- 23.3k
- Forks
- 2k
- Avg merge
- 1d 15h
- Merged PRs (30d)
- 290
Description
### Objective
Define how HybridWebView should manage permissions for media capture (camera, microphone, audio) on Android.
### Scope
- Specify permission prompts and flows for camera, microphone, and audio recording.
- Detail integration with Android’s runtime permission system and WebView permission requests.
- Clarify developer customization points (e.g., override permission handling, diagnostics).
### Requirements
- List required Android permissions and when they should be requested.
- Describe expected callback or event model for permission requests.
- Provide guidance for handling denied permissions gracefully.
- Detail security and privacy considerations.
### Implementation Sample (from original issue)
```csharp
#if ANDROID
internal class MyWebChromeClient : MauiWebChromeClient {
public MyWebChromeClient(IWebViewHandler handler) : base(handler) { }
// Requires android.permission.MODIFY_AUDIO_SETTINGS, android.permission.RECORD_AUDIO, and android.permission.CAMERA
public override void OnPermissionRequest(PermissionRequest request) {
foreach (var resource in request.GetResources()) {
if (resource.Equals(PermissionRequest.ResourceVideoCapture, StringComparison.OrdinalIgnoreCase)) {
PermissionStatus status = Permissions.CheckStatusAsync().Result;
if (status != PermissionStatus.Granted) {
request.Deny();
} else {
request.Grant(request.GetResources());
}
return;
}
if (resource.Equals(PermissionRequest.ResourceAudioCapture, StringComparison.OrdinalIgnoreCase)) {
PermissionStatus status = Permissions.CheckStatusAsync().Result;
if (status != PermissionStatus.Granted) {
request.Deny();
} else {
request.Grant(request.GetResources());
}
return;
}
}
base.OnPermissionRequest(request);
}
}
#endif
```
### References
- [Original Issue #23747](https://github.com/dotnet/maui/issues/23747)
- [Android WebChromeClient PermissionRequest](https://developer.android.com/reference/android/webkit/WebChromeClient.PermissionRequest)
- [MAUI Permissions API](https://learn.microsoft.com/en-us/dotnet/maui/platform-integration/device-permissions?view=net-maui-8.0)
Contributor guide
Assessment
This issue has not been assessed yet.