如何将文件保存在SD卡的根目录下(android 8.0+)?

How to save files at the root of SD card (android 8.0+)?

我正在尝试在外部 SD 卡的根目录下创建一个文件夹(稍后将我的应用程序生成的文件放入其中)。

我正在请求 WRITE_EXTERNAL_STORAGE 许可,但我认为在外部 SD 卡上实际写入是不够的。

这是我的代码:

private boolean authorized = false;
private final static int MY_PERMISSIONS_REQUEST_EXTERNAL_STORAGE = 1;
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        long debut = System.currentTimeMillis();
        if (ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
            debut = System.currentTimeMillis();
            ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, MY_PERMISSIONS_REQUEST_EXTERNAL_STORAGE);
        } else {
            authorized = true;
        }
        while (!authorized) {
            if (ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
                authorized = true;
            } else if (System.currentTimeMillis() - debut >= 5000) {
                this.finish();
                System.exit(0);
            }
        }

//SDCARD path = "/storage/9016-4EF8"
new File("/storage/9016-4EF8"+"/MyApp").mkdirs();
}

我的代码适用于我的 phone (android 5.1),但不适用于我的平板电脑 (android 8.1)。好像我只有最新版本的 android 的读取权限。 如何获取SD卡的写权限?

我正在使用文件浏览器应用程序 Xplore,此应用程序似乎在能够修改 SD 卡上的文件之前请求其他许可:

"grant Xplore access to your data, including photos and videos, on sd card"

我如何请求此权限(如果可能的话)?

你说得对!如果要访问 SD 卡,这还不够。您需要使用 documentFile.

查看我对一个关于 SD 卡的旧问题的回答,了解如何访问您的 SD 卡