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
相关产品推荐
相关产品推荐

