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

如何在SD卡(android 8.0+)的根目录下保存文件?,android,android-storage,Android,Android Storage,我正在尝试在外部SD卡的根目录下创建一个文件夹,然后将我的应用程序生成的文件放入其中 我要求获得写入外部存储权限,但我认为仅在外部SD卡上写入是不够的 这是我的密码: private boolean authorized = false; private final static int MY_PERMISSIONS_REQUEST_EXTERNAL_STORAGE = 1; protected void onCreate(Bundle savedInstanceState) {

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

我要求获得写入外部存储权限,但我认为仅在外部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();
}
我的代码适用于我的手机安卓5.1,但不适用于我的平板电脑安卓8.1。看起来我只有最新版本的android的阅读权限。
如何获得SD卡的写入权限

我正在使用文件资源管理器应用程序Xplore,该应用程序在能够修改SD卡上的文件之前似乎需要另一个权限:

允许Xplore访问sd卡上的数据,包括照片和视频


如果可能的话,我怎么能申请这个许可呢?

你说得对!如果您想访问SD卡,这是不够的。您需要使用文档文件


请参阅我对有关SD卡的旧问题的回答,以了解如何访问SD卡。

我如何获得SD卡的写入权限?-你不需要,尤其是在安卓Q和更高版本上。使用存储访问框架,例如,ACTION_OPEN_DOCUMENT_TREE,让用户选择内容的去向。问题是我不希望用户能够选择,我需要将我的文件放在固定位置,在SD卡上很容易找到。no my friend这是一种不好的做法,Google不再允许这样做。用户必须选择文件夹。你可以通过对话框或其他方式让用户选择SD的根文件夹,这样你就可以访问该文件夹的任何子文件夹,当然这意味着整个SD卡。我被要求以这种方式保存所有文件。如果我将返回的URI保存在某个地方,我会保留写入权限吗?我被要求以这种方式保存所有文件-与向您提出该要求的人交谈,并解释这不是Android上的工作方式。我需要我的文件在一个固定的位置,很容易在SD卡上找到-欢迎您使用getExternalFilesDirs。如果返回2+个位置,除第一个位置外,所有位置都将位于可移动介质上。不过,它不会成为可移动媒体的根。如果我将返回的URI保存在某个地方,我会保留写入权限吗?-您可以对从存储访问框架获得的Uri使用takePersistableUriPermissions on ContentResolver。没有提供任何内容,也没有示例。如果这个问题是公开的,你应该举例回答。否则,这是您发布的问题的副本