Создание txt-файла и просмотр его в диспетчере файлов

Я создал приложение для Android, которое получает информацию от пользователя через EditText и пишет их name.txt файл во внутренней памяти телефона. Можно ли открыть текстовый файл в файловом менеджере телефона? Я пытался получить путь к файлу, используя getFilesDir().getAbsolutePath()+"/"+FILE_NAME, Но не удалось найти файл в файловом менеджере.

2 ответа

Решение

Вам нужно использовать Внешнее хранилище, если вы хотите, чтобы другое приложение, такое как File Manager, получило доступ к файлу. Внутреннее хранилище доступно для чтения только вашим приложением.

В комментариях вы задаете правильный вопрос - "Что делать, если у телефона нет внешнего накопителя...?", Это на самом деле не проблема сегодня. См. https://developer.android.com/training/data-storage/files:

Многие устройства теперь делят пространство постоянного хранения на отдельные "внутренние" и "внешние" разделы. Таким образом, даже без съемного носителя, эти два пространства всегда существуют...

==========

Так что измените свой код выше на это:

getExternalFilesDir().getAbsolutePath()+"/"+FILE_NAME

getExternalFilesDir это метод из android.content.Context учебный класс. Так что этот вызов будет работать из вашего класса активности, который является Context,

=============

Дальнейшая поддержка выбора внешнего хранилища также https://developer.android.com/training/data-storage/files.

Внутреннее хранилище лучше всего, когда вы хотите быть уверены, что ни пользователь, ни другие приложения не смогут получить доступ к вашим файлам.

Внешнее хранилище - лучшее место для файлов, которые не требуют ограничений доступа, и для файлов, которыми вы хотите поделиться с другими приложениями или разрешить пользователю доступ с компьютера.

Для каждого приложения имеется личное хранилище, к которому можно получить доступ из самого приложения, а затем к общему хранилищу /sdcard/..., к которому также может получить доступ другое приложение (необходимо получить разрешение хранилища из системы), этот метод сохранит содержимое в файле в личном хранилище приложения

public void saveFile(String fileName, String content) {
        try {
            FileOutputStream fOut = context.openFileOutput(fileName, Context.MODE_PRIVATE);
            fOut.write((content).getBytes());

            fOut.flush();
            fOut.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
Другие вопросы по тегам