写入SD卡的权限

时间:2010-01-23 02:29:19

标签: java android

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

2 个答案:

答案 0 :(得分:208)

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

File sdDir = Environment.getExternalStorageDirectory();

如果您还没有这样做,则需要通过将以下行添加到您的清单中,为您的应用提供写入SD卡的正确权限:

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

答案 1 :(得分:1)

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

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

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);
  }
}