我正在开发一款应该在SD卡上存储照片的应用。首先在代码中检索SD卡路径,因为 getExternalStorageDirectory()不返回准确的SD卡路径。 然后我试图创建一个目录来存储图片:
String PACKAGE_NAME = "com.example.me.sdapp";
// sdpath = "/storage/extSdCard/"
String path = sdpath+"Android/data/"+PACKAGE_NAME;
File folder = new File(path);
if (!folder.exists()){
var = folder.mkdirs();
if (!folder.canWrite()){
Log.d("SD Card app", "Directory is not writable");
}
}
未构建目录,并且会显示日志消息。因此,我想我无法写入那个空间。 但是,当我使用adb shell运行时,我可以手动创建目录:
mkdir /storage/extSdCard/Android/data/com.example.me.sdapp
手动创建目录后,可以从应用程序中将图片存储在其中。
为什么我不能从应用程序在SD卡上创建我的应用程序文件夹,但是一旦手动创建了文件夹,我仍然可以从应用程序向其写入文件?我怎样才能从应用程序中创建该文件夹?
我试图在清单中没有权限的情况下使其工作:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE>
但我想这无论如何都不会成为问题,因为只要我手动创建目录,应用程序就可以在其中写入。
该设备是三星Galaxy Tab III,Android版本是4.4.2。
修改
由于有些人将我的问题标记为this one的副本,我会尝试解释为什么其他帖子没有解决我的问题。
所有答案都是指不始终指向SD卡的方法getExternalStorageDirectory()
;就我而言,它指向内部存储。因此,当我使用此方法时,我确实可以从应用程序创建我的app文件夹,但该文件夹将在内部存储中创建,而不是在SD卡上创建。
有些回答提到了明确许可,我说我已经考虑过了。
答案 0 :(得分:0)
**用于路径检索**
File direct = new File(Environment.getExternalStorageDirectory() + "Your folder path" );
if (!direct.exists()) {
mkdir();
}
这将为您提供正确的SD卡路径。