2016-11-20 89 views
0

我无法创建这个简单的代码目录:安卓:创建目录失败

public class ExternalStorage { 
    private final String BACKUPS_DIR = "MyDir"; 

    public String createBackupDir() { 
     if (!isExternalStorageWritable()) { 
      Log.e("MyApp", "Storage not writable"); 
      return null; 
     } 

     String path = Environment.getExternalStorageDirectory() + 
       File.separator + BACKUPS_DIR; 

     File folder = new File(path); 

     boolean success = true; 
     if (!folder.exists()) 
      success = folder.mkdirs(); 

     if (success) 
      return path; 

     Log.e("MyApp", "Backup Dir: creation failed"); 
     return null; 
    } 

    /* Checks if external storage is available for read and write */ 
    public boolean isExternalStorageWritable() { 
     String state = Environment.getExternalStorageState(); 
     return Environment.MEDIA_MOUNTED.equals(state); 
    } 

    /* Checks if external storage is available to at least read */ 
    public boolean isExternalStorageReadable() { 
     String state = Environment.getExternalStorageState(); 
     return Environment.MEDIA_MOUNTED.equals(state) || 
       Environment.MEDIA_MOUNTED_READ_ONLY.equals(state); 
    } 
} 

Environment.getExternalStorageDirectory()的返回值是:

/storage/emulated/0 

日志是:

MyApp : Backup Dir: creation failed 

舱单的权限是:

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

mkdirs只返回假的,我不明白是什么发生,任何帮助将不胜感激

+0

舱单权限是: <机器人:使用的许可机器人:名称= “android.permission.WRITE_EXTERNAL_STORAGE”/> <机器人:使用的许可机器人:名称= “android.permission.READ_EXTERNAL_STORAGE”/> –

+0

是意识到无论目录是否创建,您的日志都会被执行。 – Opiatefuchs

+0

另外请注意,从android 6你必须手动接受'应用程序信息'屏幕的权限。 (不知道这是否适用于你测试这个版本的Android?) – namingFailed

回答

0

运行权限就是答案,谢谢。