FileNotFound,打开失败:EACCES(权限被拒绝)

时间:2018-11-13 17:28:32

标签: java android

我正在尝试在外部存储设备上写入文件,此代码在3周前正常运行,但是从最近4天起它停止工作,我不知道它怎么了。

以下是我的代码。

    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();

以及清单中设置的以下权限。

    <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"/>

我已经要求运行时权限,并且此代码对于API> = 19正常工作,但是在API <19中引发以下错误。

  

/mnt/sdcard/XXX/backuptask.db:打开失败:EACCES(权限被拒绝)   11-13 17:20:47.776 4127-4158 / com.XXX.XXX W / System.err:   java.io.FileNotFoundException:/mnt/sdcard/XXX/backuptask.db:打开   失败:EACCES(权限被拒绝)11-13 17:20:47.786   4127-4158 / com.XXX.XXX W / System.err:在   libcore.io.IoBridge.open(IoBridge.java:416)           在java.io.FileOutputStream。(FileOutputStream.java:88)           在com.Tasks.exportimporttasks.TaskBackup.startBackup(TaskBackup.java:133)           在com.Tasks.demoimportexport.RestoreBackup $ ExportDatabaseTask.doInBackground(RestoreBackup.java:272)           在com.Tasks.demoimportexport.RestoreBackup $ ExportDatabaseTask.doInBackground(RestoreBackup.java:259)           在android.os.AsyncTask $ 2.call(AsyncTask.java:287)           在java.util.concurrent.FutureTask.run(FutureTask.java:234)           在android.os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java:230)           在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)           在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:573)           在java.lang.Thread.run(Thread.java:856)       导致原因:libcore.io.ErrnoException:打开失败:EACCES(权限被拒绝)           在libcore.io.Posix.open(本机方法)           在libcore.io.BlockGuardOs.open(BlockGuardOs.java:110)           在libcore.io.IoBridge.open(IoBridge.java:400)         ...还有10个

0 个答案:

没有答案