Xamarin.Essentials MediaPicker.CapturePhotoAsync在Android 13中失效如何解决?
解决Android 13下Xamarin.Essentials MediaPicker拍照权限报错问题
临时 workaround(无需等待官方更新)
- 调整Manifest权限配置:在Android项目的
AndroidManifest.xml里,给旧版存储权限加上android:maxSdkVersion="32",让Android 13及以上系统自动忽略这些权限,低版本仍能正常使用,同时保留CAMERA和READ_MEDIA_IMAGES权限:<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="32" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" /> - 手动跳过不必要的权限检查:在调用拍照方法前,仅针对Android 13以下版本检查存储写入权限,Android 13直接跳过:
if (DeviceInfo.Version.Major < 13) { var writeStatus = await Permissions.CheckStatusAsync<Permissions.StorageWrite>(); if (writeStatus != PermissionStatus.Granted) { writeStatus = await Permissions.RequestAsync<Permissions.StorageWrite>(); } } var photo = await MediaPicker.CapturePhotoAsync();
官方修复方式
等待Xamarin.Essentials发布包含权限逻辑修复的正式版本(相关修复已提交PR,调整了Android 13下的权限校验逻辑,不再要求存储写入权限),更新到最新稳定版即可彻底解决该问题。
内容的提问来源于stack exchange,提问作者Aiko West
相关产品推荐
相关产品推荐

