Android - Получение контекста от приемника вещания onReceive () для отправки - PullRequest
79 голосов
/ 07 ноября 2010

Я хочу создать намерение и передать его в службу из onReceive () моего BroadcastReceiver.

До сих пор я всегда использовал View.getContext (), но здесь я застрял.Как именно я могу получить контекст, чтобы я мог использовать public Intent (Context packageContext, Class<?> cls)?

Ответы [ 3 ]

281 голосов
/ 07 ноября 2010

public abstract void onReceive (Context context, Intent intent)

onReceive дает вам контекст.Что еще ты хочешь?

2 голосов
/ 23 марта 2016

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

Итак, в вашем заявлении о проблеме говорится, что вы хотели запустить службу, используя этот контекст при создании намерения, а затем вызвать startService с этим объектом контекста.Это невозможно.

Прочтите, что можно и что нельзя делать в контексте BroadcastReceiver.

http://developer.android.com/reference/android/content/BroadcastReceiver.html

0 голосов
/ 06 июня 2018

В BroadcastReceiver метод

onReceive(Context context, Intent intent)

предоставляет контекст

, поэтому

для начала действия используйте

context.startActivity(intent);

и для запуска службы

context.startService(intent);
...