Пробовал с помощью File, ничего не получилось. Может не так путь задаю - File file = new File("/storage/emulated/0/","a.txt")
?
Было ж уже Чтение файлов
Надо разбираться для чего какие пути предназначены, какие андройдовские права нужны, и использовать специальные функции для получения путей.
После долгого поиска по инету нашел-таки, что в манифесте нужно прописывать: <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Но это еще не все. Нужно в настройках дать разрешение на память. После этого у меня все заработало.
Однако хотелось бы, чтобы дать разрешение на “память” программно.
Если знаете что - подскажите.
Забыл сказать. Все это мне нужно для чтения и записи текстовой информации в фаил (без диалогового окна).
Диалог выдать можно Request app permissions | Android Developers
Для файлов настроек и т.д. есть папка приложения, для которой не нужны права.
Пытаюсь запустить ContextCompat.checkSelfPermission()
чтобы проверить есть ли у меня права, компилятор ругается что нет такой переменной ContextCompat. Возможно ли, что моя среда программирования не доработона? Последнее обновление было в 2018 году.
Может это не добавлено?
add dependencies on the following libraries in your module’s
build.gradle
file:
androidx.activity
, version 1.2.0 or later.androidx.fragment
, version 1.3.0 or later.
Или просто импорта нет
import androidx.core.content.ContextCompat;
При добавлении этого кода компилятор сказал: The import androidx cannot be resolved.
Вот как вывести диалоговое окно для запроса разрешения на работу с памятью:
requestPermissions(
new String[] { "android.permission.READ_EXTERNAL_STORAGE",
"android.permission.WRITE_EXTERNAL_STORAGE" },
1);