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

时间:2019-06-07 13:05:33

标签: android android-storage

我正在尝试在外部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();
}

我的代码在我的手机(android 5.1)上有效,但在我的平板电脑(android 8.1)上无效。似乎我只对最新版本的android具有读取权限。 如何获得SD卡的写许可?

我正在使用文件浏览器应用程序Xplore,该应用程序似乎需要其他许可,然后才能修改SD卡上的文件:

“允许Xplore使用SD卡访问您的数据(包括照片和视频)”

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

1 个答案:

答案 0 :(得分:0)

您是正确的!如果要访问SD卡还不够。您需要使用documentFile

请参阅我对SD卡的较早问题的回答,以了解如何访问SD卡here