Чем отличается доступ к файловой системе между KitKat 4.2 и Nougat 7.1.1?

У меня есть приложение HTMLSpyII, которое я разработал несколько лет назад, когда я был абсолютным новичком в программировании Android. Как бы то ни было, через несколько лет я не занимался программированием, он работал на моем Samsung S4 mini KitKat 4.4.2, но он не будет работать на моем Samsung Tab E Nougat 7.1.1. Я уверен, что мне не хватает чего-то простого.

Программа пытается создать каталог /HTMLSpyII/Jsoup в каталоге загрузок устройства. Он выводит этот двухстрочный runTimeAlert из последней строки следующего фрагмента кода...
Невозможно создать путь
/ Хранение / эмулировать /0/ Скачать /HTMLSpyII/Jsoup

Вот фрагмент кода, который является частью onCreate...

    private File root;
    private String urlString, tokenString;
    private EditText url, token;
    ...
 root = Environment.getExternalStoragePublicDirectory(
            Environment.DIRECTORY_DOWNLOADS + "/HTMLSpyII/Jsoup");
        Bundle extras = getIntent().getExtras();
        if (extras != null) {
            urlString = extras.getString("urlKey");
            url.setText(urlString);
            tokenString = extras.getString("tokenKey");
            token.setText(tokenString);
            if (getIntent().hasExtra("redirectsKey"))
                followRedirects = extras.getBoolean("redirectsKey");
            else
                followRedirects = true;
            if (getIntent().hasExtra("rootKey"))
                root = new File (extras.getString("rootKey"));
        }
        if (!root.exists()) root.mkdirs();
        if (!root.isDirectory())
            runTimeAlert("Unable to create path\n" + root.toString())

Надеюсь, вы можете помочь:)

1 ответ

Наконец я обнаружил, что ответ на мой вопрос включает проверку прав доступа во время выполнения. Это было новым для меня. Ответ предоставлен Tarun, в этом сообщении Stackru...
Android-зефир запросить разрешение?
Ответ Таруна довольно далек, поэтому проще всего найти его, выполнив поиск в сообщении по имени Тарун; и нашел здесь также... http://revisitingandroid.blogspot.com/2017/01/how-to-check-and-request-for-run-time.html

Другие вопросы по тегам