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

.NET MAUI中AndroidManifest.xml权限设置不保存问题咨询

问题原因及解决方法

一、权限勾选不保存+显示红色的原因

  • 废弃权限标记:READ_EXTERNAL_STORAGE在Android 13(API 33)及以上版本已被官方废弃,Android Studio的可视化权限编辑器会将这类权限标红,并且不会保存勾选状态——因为系统不再推荐使用该权限,编辑器会自动过滤废弃权限的可视化操作。
  • XML与编辑器不同步:即使你手动在AndroidManifest.xml中添加了该权限,可视化编辑器也不会同步显示勾选状态,但XML中的权限声明实际是有效的(仅在目标SDK低于33时生效)。

二、文件夹选择器权限问题的解决方法

情况1:项目目标SDK为Android 13+(API 33及以上)

  • 无需READ_EXTERNAL_STORAGE:Maui官方的FolderPicker(包括CommunityToolkit.Maui中的实现)会调用系统原生文件选择器,用户选择文件夹后会自动获得该文件夹的访问权限,不需要申请全局存储权限。如果你的文件夹选择逻辑是自定义的,建议改用系统的ACTION_OPEN_DOCUMENT_TREE意图,同样无需额外权限。
  • 特殊场景需特殊权限:如果必须访问设备上的所有公共目录,需要申请MANAGE_EXTERNAL_STORAGE权限,但这个权限属于特殊权限,无法通过代码自动请求,必须引导用户到系统设置手动开启(路径:设置 > 应用 > 你的应用 > 权限 > 所有文件访问权限)。同时在AndroidManifest.xml中声明:
    <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
    

情况2:项目目标SDK低于Android 13(API 32及以下)

  • 直接编辑XML文件:跳过可视化编辑器的勾选操作,手动在AndroidManifest.xml的<manifest>标签下添加权限声明,保存即可生效:
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    
  • 代码中动态请求权限:在使用文件夹选择器前,通过Maui的权限API请求存储读取权限:
    var status = await Permissions.CheckStatusAsync<Permissions.StorageRead>();
    if (status != PermissionStatus.Granted)
    {
        status = await Permissions.RequestAsync<Permissions.StorageRead>();
    }
    

额外排查点

  • 检查AndroidManifest.xml中权限声明的位置,确保是在<manifest>根标签下,而非<application>标签内部。
  • 清理Android Studio缓存(File > Invalidate Caches... > Invalidate and Restart),解决编辑器显示异常的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 07:03:29