This is how I'm trying to do it:
public void SaveImageToMemory(Bitmap bitmap, String fileName){
File outFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/ImageEncryptionDemo", fileName+".jpeg");
try {
outFile.getParentFile().mkdirs();
outFile.createNewFile();
FileOutputStream outStream = new FileOutputStream(outFile);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outStream);
outStream.flush();
outStream.close();
Log.i("app", "Saved image to " + outFile.getAbsolutePath());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (java.io.IOException e){
e.printStackTrace();
}
}
I've no idea why it throws IOException even if:
- Permissions in Android Manifest are granted
outFile.getParentFile().mkdirs();
should ensure that all necessary parent directories are created- Below functions (taken from android docs) return
true
:
/* Checks if external storage is available for read and write */
public boolean isExternalStorageWritable() {
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
return true;
}
return false;
}
/* Checks if external storage is available to at least read */
public boolean isExternalStorageReadable() {
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state) ||
Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
return true;
}
return false;
}
Permissions in AndroidManifest:
<manifest [...]>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>