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

Xamarin C#应用写入文件至项目目录遇权限异常求助

问题解决思路

1. 未授权异常原因

移动应用(Android/iOS)存在沙箱机制,应用安装目录(你代码中直接写"healthcare6copy.db"对应的路径)属于只读区域,不允许写入操作,因此触发权限异常。必须使用系统提供的可写存储目录。

2. 正确的文件复制实现

你已通过Environment.SpecialFolder.LocalApplicationData获取到数据库的私有可写路径,若要将该文件复制到可同步到PC的位置,分平台处理:

Android 平台

将文件复制到外部公共存储的Documents目录,示例代码:

string dbPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "healthcare6.db");
// 获取外部Documents目录路径
string targetPath = Path.Combine(Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryDocuments).AbsolutePath, "healthcare6copy.db");

if (File.Exists(dbPath))
{
    File.Copy(dbPath, targetPath, overwrite: true);
}

需配置并申请权限:

  • 在AndroidManifest.xml中添加权限声明:
    <!-- Android 10及以下版本 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <!-- Android 11+ 如需访问公共目录 -->
    <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
    
  • 运行时主动请求权限:
    var permissionStatus = await Permissions.RequestAsync<Permissions.StorageWrite>();
    if (permissionStatus != PermissionStatus.Granted)
    {
        // 处理权限拒绝逻辑
        return;
    }
    

iOS 平台

开启文件共享功能,将文件写入应用共享目录,示例代码:

string dbPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "healthcare6.db");
// 获取应用共享目录路径
string targetPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "healthcare6copy.db");

if (File.Exists(dbPath))
{
    File.Copy(dbPath, targetPath, overwrite: true);
}

需在Info.plist中开启文件共享:

<key>UIFileSharingEnabled</key>
<true/>
<key>LSSupportsOpeningDocumentsInPlace</key>
<true/>

3. 同步文件到本地PC

  • Android:文件复制到外部Documents目录后,可通过USB连接PC,直接在手机存储的Documents文件夹中找到文件并复制;或使用ADB命令拉取:
    adb pull /data/data/[你的应用包名]/files/healthcare6.db C:\你的PC目标路径\healthcare6copy.db
    
  • iOS:开启文件共享后,通过macOS的Finder或Windows的iTunes找到你的应用,即可导出文件到PC。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 11:35:12