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

Android 14+版本下Xamarin读写权限申请异常求助

解决Android TargetSdk33+存储权限申请无弹窗问题

问题根源

Android 13(API 33)开始,原有的READ_EXTERNAL_STORAGE/WRITE_EXTERNAL_STORAGE权限被拆分为细分的媒体权限(READ_MEDIA_IMAGES/READ_MEDIA_VIDEO/READ_MEDIA_AUDIO)。你使用的Plugin.Permissions.Abstractions.Permission.Storage枚举在TargetSdk33+环境下,无法正确映射到新的媒体权限,导致系统不弹出授权弹窗。

解决步骤

  1. 替换权限枚举:根据业务需求,将原代码中的Permission.Storage替换为对应媒体类型的权限枚举:

    • 访问图片:Permission.Photos(对应READ_MEDIA_IMAGES)
    • 访问视频:Permission.Videos(对应READ_MEDIA_VIDEO)
    • 访问音频:Permission.Audio(对应READ_MEDIA_AUDIO)
  2. 修改权限申请代码:以访问图片为例,修改后的代码如下:

public async Task<bool> PhotosPermission()
{
    try
    {
        var status = await CrossPermissions.Current.CheckPermissionStatusAsync(Plugin.Permissions.Abstractions.Permission.Photos);
        if (status == Plugin.Permissions.Abstractions.PermissionStatus.Granted)
            return true;
        
        if (await CrossPermissions.Current.ShouldShowRequestPermissionRationaleAsync(Plugin.Permissions.Abstractions.Permission.Photos))
        {
            await App.Current.MainPage.DisplayAlert("Galeria de imagens", "Por favor, dê permissão para o Dr. Clin acessar suas fotos.", "OK");
        }

        var results = await CrossPermissions.Current.RequestPermissionsAsync(Plugin.Permissions.Abstractions.Permission.Photos);
        status = results[Plugin.Permissions.Abstractions.Permission.Photos];
        
        return status == Plugin.Permissions.Abstractions.PermissionStatus.Granted;
    }
    catch (Exception ex)
    {
        Console.WriteLine("Deu um erro ao pegar a permissão de acessar fotos =========>" + ex.Message);
        return false;
    }
}
  1. 冗余权限清理:Android 13+中,若仅访问媒体文件,可移除WRITE_EXTERNAL_STORAGE和READ_EXTERNAL_STORAGE权限(你已添加的READ_MEDIA_*权限已足够)。

  2. 插件版本检查:确保你使用的CrossPermissions插件是最新版本,旧版本可能未适配Android 13的权限变更。

额外说明

如果需要同时访问多种媒体类型,可一次性请求多个权限:

var results = await CrossPermissions.Current.RequestPermissionsAsync(
    Plugin.Permissions.Abstractions.Permission.Photos,
    Plugin.Permissions.Abstractions.Permission.Videos,
    Plugin.Permissions.Abstractions.Permission.Audio
);

内容的提问来源于stack exchange,提问作者flavio mesquita marinho filho

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 19:07:36