Невозможно ПРОЧИТАТЬ / ЗАПИСАТЬ на внешнем хранилище, даже имея разрешения - PullRequest
1 голос
/ 05 марта 2020

Запуск моего приложения на Huawei Mate 20, следующие строки:

    String ext_path = Environment.getExternalStorageDirectory().getAbsolutePath();
    File ext_folder = new File(ext_path);
    System.out.println("Path: " + ext_path + " Dir Check: " + ext_folder.isDirectory() + " Can read: " + ext_folder.canRead());

Возврат: «Путь: / storage / emulated / 0 Dir Check: true Может читать: false»

Однако я дал все разрешения и включил их в манифест:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

Разве canRead () не должен возвращать True? Я не могу писать или читать файлы. В чем может быть причина?

Я также попробовал:

    String extStore = System.getenv("EXTERNAL_STORAGE");
    File f_exts = new File(extStore);
    System.out.println(f_exts);
    System.out.println(Arrays.toString(f_exts.listFiles()));

и получаю: "EXTERNAL_STORAGE" и "null"

1 Ответ

1 голос
/ 05 марта 2020

вам необходимо явно попросить пользователя предоставить указанные разрешения. иначе это не будет работать в более новых android vesions.try, добавляя это в onCreate

ActivityCompat.requestPermissions(MainActivity.this, new String[]{READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE},111);

А также

Если вы TARGETING Android Q, также Environment.getExternalStorageDirectory () больше не лидирует в доступной папке, что я думаю, на самом деле ваша проблема. он устарел в пользу Context.getExternalFilesDir (null), который возвращает файл. это стоит попробовать, так как внешнее хранилище ваших приложений должно выглядеть примерно так: *

enter image description here

...