dotnet / dotnet/maui

Permissions Management for Media Capture in HybridWebView (Android)

Open
#30,847 0 comments 0 reactions 1 assignee Claimed by @mattleibow View on GitHub
area-controls-hybridwebview p/0 s/triaged
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.