2016-11-20 90 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

運行權限就是答案,謝謝。