在 Android 小部件中获取电池电量
我为 Android 编写了一个小部件,我正在尝试获取电池电量。 我尝试使用
Intent batteryIntent = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
但收到错误: “IntentReceiver组件不允许注册接收意图”
为什么? ACTION_BATTERY_CHANGED 是一个粘性意图,我不注册接收器(第一个参数为 null)。
有什么解决办法吗?
谢谢。
I wrote a widget for Android and I'm trying to get the battery level.
I've tried using
Intent batteryIntent = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
but I get the error:
"IntentReceiver components are not allowed to register to receive intents"
Why? the ACTION_BATTERY_CHANGED is a sticky intent and I don't register a receiver (null in the first parameter).
Any workaround?
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
hackbod 在评论中给出了解决方案:
“使用 getApplicationContext().registerReciever() ”
hackbod gave the solution at the comments:
" use getApplicationContext().registerReciever() "
嗯……感觉就像一个错误。他们一定是太早执行 is-a-
BroadcastRecevier
检查了。您可能想要创建一个项目来演示该问题,然后将其发布到 b.android.com。就解决方法而言:
步骤#1:创建
IntentService
步骤#2:在
onHandleIntent()
中,执行实际的小部件更新工作,包括获取电池电量步骤# 3:让您的
AppWidgetProvider
的onUpdate()
只需在您的IntentService
上调用startService()
即可。Ummmm...that feels like a bug. They must be doing the is-a-
BroadcastRecevier
check too soon. You might want to create a project that demonstrates the problem, then post that to b.android.com.In terms of a workaround:
Step #1: Create an
IntentService
Step #2: In
onHandleIntent()
, do your actual widget update work, including getting the battery levelStep #3: Have
onUpdate()
of yourAppWidgetProvider
just callstartService()
on yourIntentService
.