#android #android-studio #directory #android-10.0
Вопрос:
Я пытаюсь создать PDF-файл и добавить его во внутреннюю память телефона Android. Я хочу создать каталог для своего приложения за пределами папки данных приложения, чтобы пользователь телефона мог получить доступ к нему из своего приложения файловой системы.
Код, который я использую для создания папки, выглядит следующим образом :
File myDir = new File(getContext().getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS), "MyApp"); if(!myDir.exists()) { myDir.mkdir(); } File file = new File(myDir, customer "_" date ".pdf");
Как я могу решить эту проблему, пожалуйста?
Хорошо, этот код приводит меня к сохранению файла в этом расположении «/хранилище/эмулировано/0/Android/данные/com.пример.myapplication/файлы/Загрузка/MyApp»
Я хочу переместить его в /хранилище/эмулированный/0/MyApp
Раньше я писал этот код, но теперь, когда «getExternalStorageDirectory» устарел
File externalStorageDirectory = Environment.getExternalStorageDirectory(); File dir = new File(externalStorageDirectory, "MyApp"); if (!dir.exists()) { dir.mkdir(); }
Комментарии:
1. Кроме того, у вас должен быть
if (!myDir.mkdir()) return;
свой код в порядке. Так в чем же проблема,?2. Почему вы говорите как о внутреннем, так и о внешнем хранилище? Сбивает с толку! И почему вы упомянули о загрузке? Это имеет отношение к делу? И исключение FileNotFoundException, которое не может быть создано с помощью опубликованного вами кода. Сбивает с толку!
3. Проблема в том, что я хочу создать папку «MyApp» во внутреннем хранилище, а не в папке Android/data/app, к которой я хочу получить доступ «/хранилище/эмулировано/0», а затем создать каталог для добавления папки. Когда я заменяю каталог на /хранилище/эмулировано/0, я получаю исключение FileNotFoundException (Android 10)
4. Какой код даст это исключение? Не тот код, который вы опубликовали.
5. @blackapps Я хочу сначала создать каталог во внутреннем хранилище, а затем добавить в него файл. Я хочу, чтобы пользователь телефона мог получить доступ к этому файлу
Ответ №1:
Я не пробовал следующие коды, но некоторое время назад использовал их в приложении:
String path = new File(Environment.getExternalStorageDirectory() "/My Folder").getPath(); createNewFolder ( path );
Метод createNewFolder создает папку и отображает тост, если он создан, и отображает другой тост, если имя папки уже существует:
private void createNewFolder(String path) { File file = new File(path); if (!file.exists()) { file.mkdir(); Toast.makeText( context , "Folder created" , Toast.LENGTH_SHORT).show(); } else { Toast.makeText( context , "Folder already exists" , Toast.LENGTH_SHORT).show(); } }
Комментарии:
1. Этот код также страдает от слепого использования mkdir ().