无法在SD卡上创建应用程序目录

时间:2017-04-11 10:43:39

标签: java android android-sdcard

我正在开发一款应该在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卡上创建。

  • 有些回答提到了明确许可,我说我已经考虑过了。

1 个答案:

答案 0 :(得分:0)

**用于路径检索**

File direct = new File(Environment.getExternalStorageDirectory() + "Your folder path" );
       if (!direct.exists()) {
                              mkdir();
                                         }

这将为您提供正确的SD卡路径。

相关问题