1. ホーム
  2. アンドロイド

[解決済み】例外「open failed: Androidで「EACCES (Permission denied)」という例外が発生する。

2022-03-25 07:56:30

質問

私は

オープンに失敗しました。 EACCES (Permission denied)

ライン上 OutputStream myOutput = new FileOutputStream(outFileName);

ルートを確認し、試しに android.permission.WRITE_EXTERNAL_STORAGE .

どうすればこの問題を解決できますか?

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

解決方法は?

私も同じ問題を抱えていました... その <uses-permission が間違った場所にありました。これが正しい。

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

uses-permission タグの外側にある必要があります。 application タグを使用します。