I'm writing an android app and it's my first time using Java. I'm trying to export a bitmap as a PNG file and save it to the directory. However, the FileOutPutStream always triggers the ioexception. I've checked the path by using isDirectory and it returns true. Could someone please look at my code to see where I get wrong?
protected void onActivityResult(int requestCode, int resultCode, Intent resultIntent) {
TextView result = findViewById(R.id.textView);
String state = Environment.getExternalStorageState();
if (!state.equals(Environment.MEDIA_MOUNTED)) {
return;
}
// Check which request we're responding to
if (requestCode == PICK_IMAGE) {
// Make sure the request was successful
if (resultCode == RESULT_OK) {
//get image Uri
Uri imageUri = resultIntent.getData();
//get image path through Uri
Bitmap bitmap;
//getting path of external DCIM directory
File dstPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
//checking if directory exists
if(dstPath.isDirectory()) {
result.setText("True");
}
String filename = "test.png";
File file = new File(dstPath,filename);
//result.setText(file.toString());
try {
bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageUri);
//result.setText(bitmap.toString());
FileOutputStream out = new FileOutputStream(file);
result.setText("flag");
if(bitmap.compress(Bitmap.CompressFormat.PNG, 100, out)==false){
result.setText("0");
}
else {
result.setText("1");
}
out.flush();
out.close();
} catch(IOException e){
e.printStackTrace();
result.setText("false");
}
}
}
}
Here is the stack trace
2020-02-26 12:55:23.534 10261-10261/com.example.webviewproject E/YOUR_APP_LOG_TAG: I got an error
java.io.FileNotFoundException: /storage/emulated/0/DCIM/test.png (Permission denied)
at java.io.FileOutputStream.open0(Native Method)
at java.io.FileOutputStream.open(FileOutputStream.java:308)
at java.io.FileOutputStream.<init>(FileOutputStream.java:238)
at java.io.FileOutputStream.<init>(FileOutputStream.java:180)
at com.example.webviewproject.MainActivity.onActivityResult(MainActivity.java:102)
at android.app.Activity.dispatchActivityResult(Activity.java:7454)
at android.app.ActivityThread.deliverResults(ActivityThread.java:4353)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:4402)
at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:49)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)