Почему файл.txt не сохраняется во внутреннем хранилище?

Я могу создать и поделиться файлом.txt, используя следующий код:

File path = new File(Environment.getExternalStorageDirectory(), "Folder");
if (!path.exists()) {
    path.mkdirs();
}

File exportFile = new File(path, fileName);
FileWriter writer = new FileWriter(exportFile);
writer.append(body);
writer.flush();
writer.close();

Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(exportFile));
startActivity(intent); 

Однако я хотел бы, чтобы этот файл был сохранен в папке приложения, а не на SD-карте напрямую, поэтому я изменил код ниже. Кажется, он не работает, поскольку не создает файл, и любое приложение, которое я пытаюсь экспортировать, не видит файл.

File path = new File(this.getFilesDir(), "exports");
if(!path.exists()){
    path.mkdir();
}

Есть идеи? Все, что я пробовал, не работает. Файл должен быть сохранен в папке Android/data/[имя пакета] да?

РЕДАКТИРОВАТЬ: Хорошо, я не мог заставить это работать, но на самом деле обнаружил, что это не тот метод, который я хотел использовать, я хотел сохранить файл в папке Android / data и для этого мне нужно было использовать:

getExternalFilesDir(null)

2 ответа

Проверьте

ContextWrapper contextWrapper = new ContextWrapper(context);
File file = contextWrapper.getDir("media", Context.MODE_PRIVATE);

А также убедитесь, что у вас есть необходимые разрешения в вашем manifest файл

  1. проверьте наличие разрешений в вашем AndroidManifest.xml
  2. проверить наличие каталога
  3. проверить наличие внешнего хранилища
  4. проверьте имя файла. Он не должен содержать пробелов
  5. проверьте наличие разрешений для записи в эту папку
Другие вопросы по тегам