写入 SD 卡的权限

2022-08-31 12:27:10

我希望我的应用程序将应用程序数据库存档到SD卡。在我的代码中,我检查目录是否存在,如果不存在,则抛出一个.在此特定实例中,我正在尝试将db文件复制到SD卡上的根目录,但它会抛出.如何更改文件夹/文件的权限以便能够写入该文件夹/文件?canWrite()IOExceptionIOException


答案 1

你是对的,SD卡目录是,但你不应该硬编码它。相反,调用 Environment.getExternalStorageDirectory() 以获取该目录:/sdcard

File sdDir = Environment.getExternalStorageDirectory();

如果尚未执行此操作,则需要通过向清单中添加以下行来向你的应用授予写入 SD 卡的正确权限:

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

答案 2

Dave的答案中上面建议的技术当然是一个很好的设计实践,是的,最终必须在AndroidManifest.xml文件中设置所需的权限才能访问外部存储。

但是,添加大多数(如果不是全部,不确定)“清单选项”的单式方法是通过实现活动(或服务)的类的属性。

Visual Studio Mono插件会自动生成清单,因此最好不要手动篡改它(我确信在某些情况下没有其他选择)。

例如:

[Activity(Label="MonoDroid App", MainLauncher=true, Permission="android.permission.WRITE_EXTERNAL_STORAGE")]
public class MonoActivity : Activity
{
  protected override void OnCreate(Bundle bindle)
  {
    base.OnCreate(bindle);
  }
}

推荐