
[code]

    1　String folder = Environment.getExternalStorageDirectory().toString() + "/data";
    2　File dir = new File(folder);
    3　// フォルダが無ければ作成
    4　if(!dir.exists()){
    5　　boolean result = dir.mkdirs();
    6　　if(!result){
    7　　　return false;
    8　　}
    9　}
    
[/code]

上記のコードを実行すると、  
1行目では、folder = "/storage/emulated/0/data"  
5行目では、result = false  
と、フォルダ作成に失敗してしまいます。  
回避方法を教えていただけますか？

テスト端末は Nexus6 (Android6.0.1) です。

以下のことを試しました。

1) Android5.x以下の端末では正常に処理されフォルダが作成されます。  
2) 親フォルダ「emulated」や「0」に対して `canWrite()` を実行すると戻り値はfalseとなる。  
3) 親フォルダ「emulated」や「0」に対して `setWritable(true, false)` を実行しても 2) の結果は変わりません。  
4) Android Device Monitor の「File Explorer」でフォルダ「xxx」追加を試みると、

[code]

    New Folder Error
    Reason: mkdir:'/storage/emulated/xxx': Permission denied
    
[/code]

が表示されます。  
/storage/emulated のPermissionは「drwx--x--x」です。

以上、よろしくお願いします。


CC BY-SA 3.0
2016-04-06T04:40:56.247
23784
2016-09-21T08:13:58.040
2016-04-06T11:27:26.387
5337
15056
question
android java
Android端末の外部ストレージにフォルダが作れない

[code]

    REQUEST_CODE = 200;    
    if (ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){
      activity.requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_CODE);
    }
    
[/code]

こんな感じでPermissionを付与してみてはどうでしょうか。


CC BY-SA 3.0
2016-04-07T09:52:34.290
23822
2016-04-07T09:52:34.290
14540
23784
answer