为什么我无法写入 Android 外部存储?

Pfr*_*edd 0 java android

我正在尝试编写一个 Android 应用程序,除其他外,它需要读取文件并将其写入“外部”存储。

虽然我能够浏览并选择外部存储上的文件夹,但每次尝试访问该文件时,都会收到“权限被拒绝”I/O 异常。

我已在我的应用程序清单中包含以下权限:

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
Run Code Online (Sandbox Code Playgroud)

我还在 Android 中启用了该应用程序的存储权限。

我正在 Chromebook 上进行开发,因此无法访问模拟器。因此,我通过 USB-C 电缆在手机(Pixel 3)上测试和调试我的应用程序。我还可以生成 APK 并将其旁加载到我的 Chromebook 上,但我无法通过这种方式进行调试。

以下代码示例是我从互联网上收集的。

 public void writeFileExternalStorage(View view) {
        String cashback = "Get 2% cashback on all purchases from xyz \n Get 10% cashback on travel from dhhs shop";
        String state = Environment.getExternalStorageState();
        //external storage availability check
        if (!Environment.MEDIA_MOUNTED.equals(state)) {
            return;
        }
        File file = new File(Environment.getExternalStoragePublicDirectory(
                Environment.DIRECTORY_DOCUMENTS), filenameExternal);


        FileOutputStream outputStream = null;
        try {
            file.createNewFile();
            //second argument of FileOutputStream constructor indicates whether to append or create new file if one exists
            outputStream = new FileOutputStream(file, true);

            outputStream.write(cashback.getBytes());
            outputStream.flush();
            outputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
Run Code Online (Sandbox Code Playgroud)

执行 file.createNewFile() 时,抛出以下异常: java.io.IOException: Permission returned

我已经在这个问题上撞墙两天了,但没有任何效果。我希望这里有人能帮忙,因为我的头真的很痛!:-)

Pfr*_*edd 5

显然,Android 10 是罪魁祸首。

我将 Target SDK 降低到 28 (Android 9) 并且代码可以运行。

看起来如果我希望它适用于 Android 10,我将不得不使用 MediaStore for SDK 29+。