You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android13下Xamarin Essentials MediaPicker存储读取权限被拒解决方案求助

解决Android 13(API33)下Xamarin.Essentials MediaPicker存储权限异常问题

1. 替换旧存储权限为API33专属媒体权限

Android 13(API33)拆分了原有的存储权限体系,针对照片选择场景,你需要修改AndroidManifest.xml:

  • 移除READ_EXTERNAL_STORAGE、WRITE_EXTERNAL_STORAGE(仅选择照片时无需WRITE权限)
  • 添加API33专属照片权限:
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />

若需处理视频/音频,可额外添加READ_MEDIA_VIDEO或READ_MEDIA_AUDIO。

2. 升级Xamarin.Essentials版本

你当前使用的1.7.5版本对Android 13适配不完善,建议升级到2.0.0及以上版本。新版本已适配API33的权限逻辑,能自动处理MediaPicker所需的权限请求,避免手动处理的遗漏。

3. 手动权限请求适配(无法升级版本时)

如果暂时无法升级库,需针对API版本做权限判断:

  • 在调用MediaPicker前,根据系统版本请求对应权限:
var status = PermissionStatus.Denied;
if (DeviceInfo.Version.Major >= 13)
{
    status = await Permissions.RequestAsync<Permissions.Media>();
}
else
{
    status = await Permissions.RequestAsync<Permissions.StorageRead>();
}

if (status == PermissionStatus.Granted)
{
    var result = await MediaPicker.PickPhotoAsync();
    // 后续照片处理逻辑
}

4. 额外注意事项

  • Android 13中WRITE_EXTERNAL_STORAGE已废弃,媒体文件写入无需申请该权限,直接通过MediaStore API操作即可。
  • 检查模拟器系统设置,确认APP已被授予对应的媒体权限(路径:设置-应用-你的APP-权限)。

内容的提问来源于stack exchange,提问作者Beatriz Pinheiro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 20:03:13