最終的に次のような画像 (EXTRA_OUTPUT) を保持するファイルを作成しようとしています。
File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES), "scouthouse");
if(!mediaStorageDir.exists()) {
mediaStorageDir.mkdirs();
}
SimpleDateFormat s = new SimpleDateFormat("ddMMyyyyhhmmss");
String format = s.format(new Date());
File file = new File(mediaStorageDir.getPath() + File.separator + format + ".jpg");
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
mediaStorageDir.exists() は true を返しますが、Windows でフォルダーが見つかりません。場所は sdcard0/Pictures/scouthouse/ です。Pictures/ フォルダーはありますが、Android は /scouthouse/ フォルダーを作成しません。Bitmapfactory でファイルをデコードしようとすると、null が返されます。
編集!
そのため、ルートに到達するためにメソッドを少し単純化し、基本的には次のようにしました。
private void createDir() {
File file = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES), "scouthouse");
if(!file.mkdirs()) {
Log.d("file", "file not created");
}
}
これによりファイル dir が作成され、初めてログが記録されません。ディレクトリが作成されましたが、電話のファイル システムのどこにも見つかりません。
private File createNewFile() {
File file = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES), "scouthouse" + File.separator + "test.jpg");
try {
if(file.createNewFile()) {
Log.d("file", "yiss");
return file;
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
このメソッドは null を返します。ファイルを作成できません..