получение уровня заряда батареи на виджете Android - PullRequest
9 голосов
/ 11 сентября 2010

Я написал виджет для Android и пытаюсь получить уровень заряда батареи. Я пытался использовать

Intent batteryIntent = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));

но я получаю ошибку: «Компонентам IntentReceiver не разрешено регистрироваться для получения намерений»

Почему? ACTION_BATTERY_CHANGED - липкое намерение, и я не регистрирую получателя (ноль в первом параметре).

Есть ли обходной путь?

Спасибо.

Ответы [ 2 ]

8 голосов
/ 13 сентября 2010

hackbod дал решение в комментариях:

"использовать getApplicationContext (). RegisterReciever ()"

3 голосов
/ 11 сентября 2010

Ммм ... это похоже на ошибку.Должно быть, они слишком скоро делают проверку "is-a- BroadcastRecevier".Возможно, вы захотите создать проект, который демонстрирует проблему, а затем опубликуйте его на b.android.com .

С точки зрения обходного пути:

Шаг # 1:Создайте IntentService

Шаг # 2: В onHandleIntent() выполните фактическое обновление виджета, включая получение уровня заряда батареи

Шаг # 3: Получите onUpdate() вашего AppWidgetProvider просто позвоните startService() на ваш IntentService.

...