Не удается прочитать файл из внешнего хранилища, даже если разрешение предоставлено - PullRequest
0 голосов
/ 25 июня 2018

Я использую Android Studio и виртуальное устройство (Nexus 5 S на x86).

Я пытаюсь в целях тестирования прочитать двоичный файл из внешнего хранилища.

Когда я подключаюськ устройству с 'adb shell' к устройству, я могу найти файл в / storage / emulated / 0

В своей тестовой деятельности я просто поместил это:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final String filename = "basse-normandie.map";

    final File file = new File(Environment.getExternalStorageDirectory()
                      .getAbsolutePath(), filename);
    Log.i("FileTests", "file is '"+file.getAbsolutePath()+"'");
    Log.i("FileTests", "file exists: "+file.exists());
    file.setReadable(true);
    Log.i("FileTests", "app can read file: "+file.canRead());

}

ив манифесте я положил

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

Я думаю, что WRITE_EXTERNAL_STORAGE бесполезен.

В окне logcat я получаю это:

06-25 19:03:46.648 5107-5107/org.airforce_one.filetests I/FileTests: file is '/storage/emulated/0/basse-normandie.map'
    file exists: true
    app can read file: false

и я могу 'я не могу понять, что я делаю ... Каждая страница, которую я просматривал в сети, говорит мне, что нужно давать разрешения, но никаких других подсказок ...

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

У меня была точно такая же проблема с файлом .map с

file.setReadable(true, false);

решил это.

0 голосов
/ 25 июня 2018

Удалить Финал в строке

 File file = new File(Environment.getExternalStorageDirectory()
                  .getAbsolutePath(), filename);

И изменить

file.setReadable(true, false); //the second parameter is specify if the permission is for OwnerOnly
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...