Android - Как сохранить файл, который читается другим приложением? - PullRequest
4 голосов
/ 10 октября 2011

Я хочу сохранить файл и затем запустить другое приложение, чтобы открыть этот файл. Как мне это сделать?

Если попытаться: openFileOutput("file.pdf", Context.MODE_WORLD_READABLE), но, похоже, не работает. Должен ли я сохранить файл вне папки приложений? Если да, то как мне передать правильные разрешения?

1 Ответ

4 голосов
/ 10 октября 2011

Вы можете использовать что-то вроде этого:

String extPath = Environment.getExternalStorageDirectory().getAbsolutePath();
String pathPrefix = extPath + "/Android/data/" + APP_PACKAGE_ID + "/cache/";

, чтобы сохранить файл на SD-карту, которая доступна для всех других приложений.Для этого достаточно режима Context.MODE_WORLD_READABLE.Код предназначен для использования с Android 2.1 и использует предложенный путь для хранения данных, связанных с приложением, на SD-карте.Начиная с Android 2.2, этот каталог автоматически удаляется при удалении приложения.

Ваше приложение нуждается в праве для установки на SD-карту:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

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

Более подробная информация описана в документации по хранению данных .

Обратите внимание, что внешняя память может быть недоступна, если пользователь подключил устройство через USB для доступа к хранилищу файлов.Вы должны всегда проверять эти условия сначала через String state = Environment.getExternalStorageState();.

...