为了账号安全,请及时绑定邮箱和手机立即绑定

允许写入SD卡

允许写入SD卡

杨魅力 2019-09-24 10:45:10
我希望我的应用程序将应用程序数据库归档到SD卡。在我的代码中,我检查目录是否canWrite()存在,如果不存在,则抛出IOException。在此特定情况下,我尝试将db文件复制到SD卡上的根目录,但是会抛出IOException。如何更改文件夹/文件的权限以能够写入?
查看完整描述

3 回答

?
慕虎7371278

TA贡献1802条经验 获得超4个赞

没错,SD卡目录位于其中,/sdcard但您不应该对其进行硬编码。而是调用Environment.getExternalStorageDirectory()来获取目录:


File sdDir = Environment.getExternalStorageDirectory();

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


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


查看完整回答
反对 回复 2019-09-24
?
浮云间

TA贡献1829条经验 获得超4个赞

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

  }

}


查看完整回答
反对 回复 2019-09-24
?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

实际上,我现在看到此WRITE_EXTERNAL_STORAGE设置是用户权限,如果按上述方式进行设置,它将在清单文件中显示为活动设置(android:permission),而不是用户权限。哦,我刚刚记得,您在VS中为用户权限用户设置了项目属性(它是所有权限的复选框列表)。

查看完整回答
反对 回复 2019-09-24
  • 3 回答
  • 0 关注
  • 678 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信