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

MAUI Android无法写入Phone/Android/data应用目录问题求助

问题解决:Android无法在Phone/Android/data/<包名>目录下看到写入的文件

核心原因:Android 11+的Scoped Storage限制

从Android 11(API 30)开始,系统启用Scoped Storage机制,即便你申请了WRITE_EXTERNAL_STORAGE和READ_EXTERNAL_STORAGE权限,第三方文件管理器也无法直接访问应用专属的Android/data/<你的包名>目录。WhatsApp等应用能被文件管理器识别,是因为它们适配了媒体内容提供器,或是用户手动给文件管理器开放了该目录的访问权限。

你的代码路径是正确的,文件实际已存在

你用GetExternalFilesDir(null)获取的路径确实指向Android/data/com.myApp/files,代码执行后test.txt已经写入该目录,只是文件管理器默认不可见。可以通过以下方式验证:

  • 执行ADB命令查看文件:
    adb shell ls /sdcard/Android/data/com.myApp/files/Library/
    
  • 在应用内添加读取代码,确认文件内容正常:
    string content = File.ReadAllText(Path.Combine(_root, "test.txt"));
    // 输出content应为"red panda"
    

让文件管理器可见的可行方案

方案1:引导用户给文件管理器授权访问Android/data目录

部分自带文件管理器(如小米、华为)需要用户手动操作:

  • 打开文件管理器,找到Android/data目录,系统会提示授权,点击允许后即可查看你的应用目录
  • 部分管理器需先开启「显示隐藏文件」选项

方案2:将文件保存到公共目录(如Download)

如果需要用户直接通过文件管理器看到文件,建议将文件保存到公共下载目录,代码示例:

#if ANDROID
string publicDir = Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryDownloads).AbsolutePath;
#endif
string savePath = Path.Combine(publicDir, "test.txt");
File.WriteAllBytes(savePath, Encoding.UTF8.GetBytes("red panda"));

注意:

  • Android 11+需要申请MANAGE_EXTERNAL_STORAGE权限,并引导用户到应用设置开启「所有文件访问权限」
  • Android 10可在AndroidManifest.xml中添加android:requestLegacyExternalStorage="true"兼容旧存储机制

方案3:在应用内提供文件分享功能

通过系统分享面板让用户将文件导出到其他可访问位置,代码示例:

#if ANDROID
var file = new Java.IO.File(Path.Combine(_root, "test.txt"));
var uri = Android.Support.V4.Content.FileProvider.GetUriForFile(
    Android.App.Application.Context,
    "com.myApp.fileprovider", // 需在AndroidManifest中配置FileProvider
    file
);
var intent = new Intent(Intent.ActionSend);
intent.SetType("text/plain");
intent.PutExtra(Intent.ExtraStream, uri);
intent.AddFlags(ActivityFlags.GrantReadUriPermission);
Android.App.Application.Context.StartActivity(Intent.CreateChooser(intent, "分享文件"));
#endif

关于Install location = preferExternal的说明

这个设置仅控制应用的安装位置,和文件存储路径无关,不会影响Android/data目录下的文件可见性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 21:03:29