如何在C# MAUI安卓项目中获取可读写应用数据目录路径?
在C# MAUI安卓项目中获取可USB访问的应用数据目录
可以获取你需要的/storage/emulated/0/Android/data/[包ID]/files目录,这个路径对应安卓的外部私有应用数据目录,既支持应用读写文件/目录,也能在USB连接电脑时被文件管理器直接访问(例如This PC\Galaxy Tab A8\Tablet\Android\data\com.test.dir\files),和你在Qt中用QStandardPaths::GenericDataLocation获取的路径功能完全一致。
以下是具体实现方法:
方法一:安卓原生API调用(仅安卓平台)
直接通过安卓应用上下文获取,无需手动拼接包ID,系统会自动匹配当前应用的包名:
// 需添加 using Android.App; string externalFilesPath = Application.Context.GetExternalFilesDir(null)?.AbsolutePath;
返回的externalFilesPath就是目标路径。
方法二:跨平台兼容写法
如果项目需要兼顾多平台,可通过条件编译单独处理安卓端逻辑:
string targetDirectory = string.Empty; #if ANDROID targetDirectory = Android.App.Application.Context.GetExternalFilesDir(null)?.AbsolutePath ?? string.Empty; #elif IOS // iOS 对应逻辑,示例为获取应用沙盒数据目录 targetDirectory = FileSystem.AppDataDirectory; #else // Windows、macOS 等其他平台逻辑 targetDirectory = FileSystem.AppDataDirectory; #endif
注意:该目录属于应用私有外部存储,安卓11及以上系统无需额外申请存储权限,应用即可正常读写;USB连接电脑时需确保设备开启了「文件传输」模式。
内容的提问来源于stack exchange,提问作者Alex F
相关产品推荐
相关产品推荐

