0

I am trying to write a file on external storage, this code was working fine 3 weeks ago, but from last 4 days it stopped working, i dont know whats wrong with it.

following is my code.

    File exportDir = new File(Environment.getExternalStorageDirectory().getAbsolutePath(), "XXX");

//                log(exportDir.exists() + " ?????");
//                log(exportDir.mkdirs() + " ?????");

                if (!exportDir.exists()) {
                    exportDir.mkdirs();
                }


                File file_path = new File(exportDir, "backuptask.db");
                try {
                    file_path.createNewFile();
                } catch (IOException e) {
                    e.printStackTrace();
                }

                FileOutputStream fos = new FileOutputStream(file_path.toString());
                fos.write(array.toString().getBytes());
                fos.close();

and following permissions set in the Manifest.

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.SEND_SMS" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />


    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

i have already asked for run-time permissions, and this code works fine for API >= 19, but throws following error in API < 19.

/mnt/sdcard/XXX/backuptask.db: open failed: EACCES (Permission denied) 11-13 17:20:47.776 4127-4158/com.XXX.XXX W/System.err: java.io.FileNotFoundException: /mnt/sdcard/XXX/backuptask.db: open failed: EACCES (Permission denied) 11-13 17:20:47.786 4127-4158/com.XXX.XXX W/System.err: at libcore.io.IoBridge.open(IoBridge.java:416) at java.io.FileOutputStream.(FileOutputStream.java:88) at com.Tasks.exportimporttasks.TaskBackup.startBackup(TaskBackup.java:133) at com.Tasks.demoimportexport.RestoreBackup$ExportDatabaseTask.doInBackground(RestoreBackup.java:272) at com.Tasks.demoimportexport.RestoreBackup$ExportDatabaseTask.doInBackground(RestoreBackup.java:259) at android.os.AsyncTask$2.call(AsyncTask.java:287) at java.util.concurrent.FutureTask.run(FutureTask.java:234) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) at java.lang.Thread.run(Thread.java:856) Caused by: libcore.io.ErrnoException: open failed: EACCES (Permission denied) at libcore.io.Posix.open(Native Method) at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110) at libcore.io.IoBridge.open(IoBridge.java:400) ... 10 more

Muhammad Husnain Tahir
  • 1,009
  • 1
  • 15
  • 28
  • why not using run-time permission. try it https://developer.android.com/training/permissions/requesting – evals Nov 13 '18 at 17:58
  • @evals thanks for your comment, i am sorry but i already mentioned in the description that i am already using run-time permissions. – Muhammad Husnain Tahir Nov 13 '18 at 18:08
  • maybe will help https://stackoverflow.com/questions/17540737/java-io-filenotfoundexception-open-failed-eacces-permission-denied-on-device – Oleg Sokolov Nov 13 '18 at 19:09

0 Answers0