我正在尝试将数据存储在SD卡上,根据指南here我应该使用getExternalFilesDir()
(API级别8),我真的很想这样做但是调用
File directory = context.getExternalFilesDir(null);
一直在返回null
,我正在使用我的主要活动作为上下文
然后我尝试恢复使用File dir = Environment.getExternalStorageDirectory();
,它正确返回SD根,但显然我无法创建建议的“/ Android / data / package_name / files /”目录:
File root = Environment.getExternalStorageDirectory();
File dir = new File(root, GlobalConstants.EXTERNAL_SAVE_DIR);
boolean canCreate = dir.mkdirs();
在此代码中canCreate
为false(EXTERNAL_SAVE_DIR显然是/ Android / data / package_name / files /)。
有什么我想念的,也许我应该问一下Manifest的权限(我什么都没发现)?我读过getExternalFilesDir()
有一个错误,其中内容在应用程序更新时被删除,我并不真正关心它,我宁愿使用它而不是另一个,因为我正在尝试符合API 8和我喜欢它为我处理目录名称的想法。
有什么想法吗?
答案 0 :(得分:21)
您需要将以下内容添加到清单中:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
否则您不能写入SD卡。如果您使用的是Eclipse,则可以使用清单编辑器的权限选项卡进行添加。