Android端末の外部ストレージにフォルダが作れない
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 }
上記のコードを実行すると、
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」追加を試みると、
New Folder Error
Reason: mkdir:'/storage/emulated/xxx': Permission denied
が表示されます。
/storage/emulated のPermissionは「drwx--x--x」です。
以上、よろしくお願いします。