2011-03-26 50 views
6

我试图将数据存储在SD卡上,根据指南here我应该使用getExternalFilesDir()(API 8级),我真的想这样做,但呼吁
File directory = context.getExternalFilesDir(null);保持回国null,我使用我的主要活动作为上下文。
然后我试图恢复使用File dir = Environment.getExternalStorageDirectory();,它正确返回SD根,但显然我无法创建提示“/安卓/数据/包名/文件/”目录:Android的外部数据存储的问题

File root = Environment.getExternalStorageDirectory(); 
    File dir = new File(root, GlobalConstants.EXTERNAL_SAVE_DIR); 
    boolean canCreate = dir.mkdirs(); 

在这段代码canCreate是错误的(EXTERNAL_SAVE_DIR显然是/ Android/data/package_name/files /)。

有什么我失踪了,也许我应该问清单上的权限(我什么也没找到)?我已阅读getExternalFilesDir()有一个内容在应用程序更新时被删除的错误,我并不在意这一点,我宁愿使用它而不是另一个,因为我试图符合API 8,我喜欢这个想法它为我处理目录名称。

有什么想法?

回答

21

您需要添加以下到您的清单:

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

否则你不能写入SD卡。如果您使用Eclipse,则可以使用清单编辑器的权限选项卡添加它。

+0

该死的,我不知道我是怎么错过的,我查过了! – capitano666 2011-03-26 20:13:01

+0

还值得一提的是,这些文件不是在编写时自动创建的,而是必须使用'file.createNewFile()' – capitano666 2011-03-26 20:41:29

+9

我不明白为什么文档没有在数据存储部分提及此权限。 +1它解决了我的问题。 – Emerald214 2011-06-16 03:58:31