The Pictures directory might not exist yet. It’s not guaranteed to be there.
In the API documentation for getExternalStoragePublicDirectory()
, the code ensures the directory exists using mkdirs
:
File path = Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES);
File file = new File(path, "DemoPicture.jpg");
try {
// Make sure the Pictures directory exists.
path.mkdirs();
…so it may be as simple as adding that path.mkdirs()
to your existing code before you createTempFile
.