Не удается добавить файл в определенную папку для Android 10

#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 ().