简体   繁体   中英

EACCESS (Permission denied) while writing txt to sdcard

I know there are many other Questions about this. I searched and searched but none of the answers seems to help. If I want to create and save a .txt on my sdcard I get the following Error:

11-05 10:13:31.244 11781-11781/com.sbeyer.daainv W/System.err: java.io.IOException: open failed: EACCES (Permission denied)
11-05 10:13:31.252 11781-11781/com.sbeyer.daainv W/System.err:     at java.io.File.createNewFile(File.java:939)
11-05 10:13:31.252 11781-11781/com.sbeyer.daainv W/System.err:     at com.sbeyer.daainv.ListViewFragment$4.onClick(ListViewFragment.java:118)
11-05 10:13:31.252 11781-11781/com.sbeyer.daainv W/System.err:     at android.view.View.performClick(View.java:5198)
11-05 10:13:31.253 11781-11781/com.sbeyer.daainv W/System.err:     at android.view.View$PerformClick.run(View.java:21147)
11-05 10:13:31.253 11781-11781/com.sbeyer.daainv W/System.err:     at android.os.Handler.handleCallback(Handler.java:739)
11-05 10:13:31.253 11781-11781/com.sbeyer.daainv W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:95)
11-05 10:13:31.253 11781-11781/com.sbeyer.daainv W/System.err:     at android.os.Looper.loop(Looper.java:148)
11-05 10:13:31.253 11781-11781/com.sbeyer.daainv W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:5417)
11-05 10:13:31.253 11781-11781/com.sbeyer.daainv W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
11-05 10:13:31.253 11781-11781/com.sbeyer.daainv W/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
11-05 10:13:31.253 11781-11781/com.sbeyer.daainv W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
11-05 10:13:31.253 11781-11781/com.sbeyer.daainv W/System.err: Caused by: android.system.ErrnoException: open failed: EACCES (Permission denied)
11-05 10:13:31.253 11781-11781/com.sbeyer.daainv W/System.err:     at libcore.io.Posix.open(Native Method)
11-05 10:13:31.253 11781-11781/com.sbeyer.daainv W/System.err:     at libcore.io.BlockGuardOs.open(BlockGuardOs.java:186)
11-05 10:13:31.253 11781-11781/com.sbeyer.daainv W/System.err:     at java.io.File.createNewFile(File.java:932)

I think the permission is correct:

<manifest [...]

    <application
           [...]
        <activity
              [...]
            <intent-filter>
                  [...]
            </intent-filter>
        </activity>
    </application>

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

</manifest>

This is my code:

 buttonexport.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View view) {

                    try {
                        String fileName = "DAA_Raum_Nr_" + roomnr.getText().toString() + ".txt";
                        File file = new File (Environment.getExternalStorageDirectory().getAbsoluteFile(), fileName);
                        file.createNewFile();

                        FileOutputStream fOut = new FileOutputStream(file);
                        OutputStreamWriter fos = new OutputStreamWriter(fOut);
                        fos.write(dataList);
                        fos.close();
                        fOut.close();

                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });

I also tried to unplug my device (rooted N5) but also no file on my sdcard.

I changed the target API to 22 to avoid complex permission handling (Android 6)

I also added the following Code to create a folder if there is no one with the wanted name.

@Override
public void onClick(View view) {

     try {
          File myDir = new File(Environment.getExternalStorageDirectory().getAbsoluteFile()+ "/DAA_Raeume");
          if (!myDir.exists()) {
               myDir.mkdir();
               }
          String fileName = "DAA_Raum_Nr_" + roomnr.getText().toString() + ".txt";
          File file = new File (myDir, fileName);
          file.createNewFile();

          FileOutputStream fOut = new FileOutputStream(file);
          OutputStreamWriter fos = new OutputStreamWriter(fOut);
          fos.write(dataList);
          fos.close();
          fOut.close();

          } catch (Exception e) {
                e.printStackTrace();
                }
}
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

请添加上述权限。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM