dotnet / dotnet/docs-maui

Media Picker (Android): Docs say CAMERA is required, but Intent-based capture doesn’t need it

Open
#3,076 0 comments 0 reactions 0 assignees View on GitHub
:watch: Not Triaged dotnet-maui/subsvc dotnet-mobile/svc Pri2
Dominant language
No language data
Stars
282
Forks
265
Avg merge
2d 2h
Merged PRs (30d)
19

Description

### Type of issue

Other (describe below)

### Description

Hi docs team,

The Media Picker page states that android.permission.CAMERA is required on Android. But MediaPicker.CapturePhotoAsync() opens the system camera via Intent (android.media.action.IMAGE_CAPTURE). Android’s own docs say that apps invoking the camera app via Intent do not need the CAMERA permission.

Why this is risky

Adds an unnecessary permission prompt → poorer UX.

Causes Google Play filtering (back camera + autofocus implied) unless features are explicitly set to required="false".

What the code & docs show

MAUI Android implementation is Intent-based (no Camera/Camera2):
https://github.com/dotnet/maui/blob/main/src/Essentials/src/MediaPicker/MediaPicker.android.cs

The same docs page already shows adding a package-visibility query for IMAGE_CAPTURE, which only applies when launching another app via Intent:
https://learn.microsoft.com/dotnet/maui/platform-integration/device-media/picker?view=net-maui-9.0

What Android says

Camera Intents (use Intent for basic capture):
https://developer.android.com/media/camera/camera-intents

Camera API note (no CAMERA needed when invoking the camera app):
https://developer.android.com/media/camera/camera-deprecated/camera-api

Suggested fixes

Change wording from “required” to:
“On Android, MediaPicker.CapturePhotoAsync launches the system camera via Intent. This doesn’t require android.permission.CAMERA. If you embed an in-app camera (Camera2/CameraX) elsewhere, then declare/request CAMERA.”

If you still mention CAMERA for historical reasons, add a bold note to prevent Play filtering:

Keep the queries example for IMAGE_CAPTURE (Android 11+ package visibility), since the flow is Intent-based.

Thanks!

### Page URL

https://learn.microsoft.com/en-us/dotnet/maui/platform-integration/device-media/picker?view=net-maui-9.0&tabs=android

### Content source URL

https://github.com/dotnet/docs-maui/blob/main/docs/platform-integration/device-media/picker.md

### Document Version Independent Id

1e5277f4-f2e4-dffe-0c08-06531d4145a1

### Platform Id

27207929-eaa2-6859-b3f3-4f8a3728d85f

### Article author

@davidortinau

### Metadata

* ID: 1e5277f4-f2e4-dffe-0c08-06531d4145a1
* PlatformId: 27207929-eaa2-6859-b3f3-4f8a3728d85f
* Service: **dotnet-mobile**
* Sub-service: **dotnet-maui**

[Related Issues](https://github.com/dotnet/docs-maui/issues?q=is%3Aissue+is%3Aopen+1e5277f4-f2e4-dffe-0c08-06531d4145a1)

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.