Заменить:
Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES)
С:
private File createImageFile() throws IOException {
// Create an image file name
убедитесь, что вы звоните:
mkdirs() // and not mkdir()
Вот код, который должен работать для вас:
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
String imageFileName = "JPEG_" + timeStamp + "_";
File storageDir = new File(Environment.getExternalStorageDirectory().toString(), "whatever_directory_existing_or_not/sub_dir_if_needed/");
storageDir.mkdirs(); // make sure you call mkdirs() and not mkdir()
File image = File.createTempFile(
imageFileName, // prefix
".jpg", // suffix
storageDir // directory
);
// Save a file: path for use with ACTION_VIEW intents
mCurrentPhotoPath = "file:" + image.getAbsolutePath();
Log.e("our file", image.toString());
return image;
}
У меня был плохой опыт следующий пример, приведенный в Android Studio Documentation, и я узнал, что есть много других, которые испытывают то же самое об этой конкретной теме здесь, в StackOverflow, это потому, что даже если мы устанавливаем
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
проблема сохраняется в некоторых устройствах.
Мой опыт был в том, что этот пример работал, когда я попробовал его в режиме отладки, после этого еще 3 теста так случилось, что мой SD внезапно был поврежден, но я не думаю, что он имеет отношение к их примеру (смешно) , Я купил новую SD-карту и попробовал ее еще раз, только чтобы понять, что оба режима выпуска и отладки выполняли один и тот же журнал ошибок: каталог не существует ENOENT. Наконец, я должен был создать каталоги, в которых каждый из них будет содержать снятые снимки с камеры моего телефона. И я был прав, он работает просто отлично.
Я надеюсь, что это поможет вам и другим людям найти ответы.
В [пример, приведенный в ссылке API] (http://developer.android.com/reference/android/os/Environment.html#getExternalStoragePublicDirectory (Java. lang.String)) имеет следующую строку: '// Убедитесь, что каталог Pictures существует. path.mkdirs(); '. Вы уверены, что каталог уже существует? –
Попробуйте эту ссылку: [canvas canvas сохранить всегда java.io.IOException: open failed: ENOENT] (http://stackoverflow.com/questions/18605440/android-canvas-save-always-java-io-ioexception-open- failed-enoent-no-such-fil) –
Спасибо! В тренинге нет такого намека. Я должен был искать ссылки API. Благодаря! –