1

外部ストレージ内のアプリ外のフォルダーにファイルを書き込もうとしています。マニフェストに WRITE_EXTERNAL_STORAGE 権限を追加しました。

ここでスタックオーバーフローにも同様のエラーがありますが、解決策を試した後 (次の行でわかるように)、同じエラーが発生しています。

Nexus 5X api 27 oreo romを搭載したエミュレーターと、Android 4.4を搭載したHuaweiの実際の電話の両方で試しました

両方のデバイスで同じエラーが発生しています:

FileNotFoundException: /storage/sdcard0/Myfile.txt: open failed: EACCES (Permission denied)

これは私のコードです:

    String content = "hello world";
    File file;
    FileOutputStream outputStream;
    try {
        file = new File(Environment.getExternalStorageDirectory().getAbsolutePath(), "MyFile.txt");
        outputStream = new FileOutputStream(file);
        outputStream.write(content.getBytes());
        outputStream.close();
    } catch (IOException e) {
        Toast.makeText(context, e.toString(), Toast.LENGTH_LONG).show();
        e.printStackTrace();
    }

マニフェスト:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.myapp">

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="18" />

<uses-feature
    android:name="android.hardware.camera.autofocus"
    android:required="false" />
<uses-feature
    android:name="android.hardware.camera"
    android:required="false" />
<uses-feature
    android:name="android.hardware.telephony"
    android:required="false" />
<uses-feature
    android:name="android.hardware.location"
    android:required="false" />
<uses-feature
    android:name="android.hardware.location.gps"
    android:required="false" />

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">

    <activity
        android:name=".activities.Activity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

</application>

4

3 に答える 3