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

Android平台MAUI读取SD卡目录并写入文件问题求助

在Android MAUI中实现SD卡目录读取与文件元数据修改的问题

我正尝试在Android设备上使用MAUI实现SD卡目录内容读取与文件写入操作,目标是访问SD卡/DCIM/Test EXIF文件夹,批量列出内容并修改、删除文件元数据。

我尝试了多种方法但均未成功:

  • 使用FilePicker:

    var result = await FilePicker.Default.PickAsync();
    if (result != null)
    {
         // Do Stuff
    }
    

    虽能访问SD卡,但文件会被复制到缓存,无法编辑原文件,且只能单文件处理,不符合批量需求。

  • 使用GetLogicalDrives():

    string folders = "";
    var xxx = System.Environment.GetLogicalDrives();
    
    foreach (string foldnm in xxx)
        folders = folders + foldnm + ";";
    

    找到路径/storage/emulated/0/Android/data,尝试用Directory.GetFiles访问时出现System.UnauthorizedAccessException权限拒绝错误。

我已在Android/Resources.AndroidManifest.xml中添加权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

卸载重装后问题依旧,添加权限检查代码后,授权弹窗未出现,且应用设置中无权限列表:

PermissionStatus status = await Permissions.CheckStatusAsync<Permissions.StorageRead>();
if (status == PermissionStatus.Denied)
{
    await DisplayAlert("Alert", "Permission Denied", "OK");
    // Ask for permission
    status = await Permissions.RequestAsync<Permissions.StorageRead>();
}

if (status == PermissionStatus.Granted)
{
    var files = Directory.GetFiles("/storage/emulated/0/Android/data", "*");
}

后续发现路径错误,SD卡实际路径为/storage/3439-3532/,可成功列出目录,但访问文件时仍提示权限拒绝:

string[] dirs1 = Directory.GetDirectories("/storage/3439-3532/", "*"); // works OK
string[] dirs2 = Directory.GetDirectories("/storage/3439-3532/BEB/", "*"); // works OK
string[] theFiles = Directory.GetFiles("/storage/3439-3532/BEB/", "*"); // KO !

恳请各位提供解决思路。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 08:15:15