2015-04-09 6 views
2

У меня есть служба фона, которая активирует класс BroadcastReceiver, когда он получает некоторый контент. Я хочу сохранить это на пути приложения во внешнем каталоге, который возвращается путем вызова Context.getExternalFilesDir() (/sdcard/Android/data/com.example.app/). Однако, поскольку это происходит в фоновом режиме, у меня нет контекста, и поэтому я не могу получить этот путь. Я абсолютно не хочу жестко кодировать путь и хочу, чтобы данные удалялись при удалении приложения. Любой другой способ, которым я могу получить этот полный путь? СамПолучить путь к хранилищу приложений без контекста

+3

«Однако, поскольку это происходит в фоновом режиме, у меня нет контекста» - «Контекст» передается как параметр «onReceive()». И поскольку ваш дисковый ввод-вывод должен быть делегирован в «Сервис» (возможно, «IntentService» использует свой фоновый поток), «Сервис» также является «Контекстом». – CommonsWare

ответ

4

Сервис контекст http://developer.android.com/reference/android/app/Service.html вы можете использовать.

this.getExternalFilesDir() 

об услуге.

+0

Пропустил эту большую точку. У службы есть контекст, и она передается методу 'onReceive()' в классе BroadcastReceiver, как CommonsWare упоминается в комментарии. – tekina

3

Попробуйте это,

String path = Environment.getExternalStorageDirectory().getAbsolutePath(); 
+0

Это не то же самое, что и ** getExternalFilesDir ** –

Смежные вопросы