Mert Mert - 3 months ago 12
Android Question

Exception 'open failed: EACCES (Permission denied)' on Android

I am getting


open failed:
EACCES (Permission denied)



on the line
OutputStream myOutput = new FileOutputStream(outFileName);


I checked the root, and I tried
android.permission.WRITE_EXTERNAL_STORAGE
.

How can I fix this problem?

try {
InputStream myInput;

myInput = getAssets().open("XXX.db");

// Path to the just created empty db
String outFileName = "/data/data/XX/databases/"
+ "XXX.db";

// Open the empty db as the output stream
OutputStream myOutput = new FileOutputStream(outFileName);

// Transfer bytes from the inputfile to the outputfile
byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer)) > 0) {
myOutput.write(buffer, 0, length);
}

// Close the streams
myOutput.flush();
myOutput.close();
myInput.close();
buffer = null;
outFileName = null;
}
catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}

Answer

I had the same problem... The <uses-permission was in the wrong place. This is right:

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

          ...

        <application>
            ...
              <activity> 
                    ...
              </activity

        </application>

    </manifest> 

The uses-permission tag needs to be outside the application tag.

Comments