在 Android 小部件中获取电池电量

发布于 2024-09-18 08:26:56 字数 314 浏览 5 评论 0原文

我为 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

情感失落者 2024-09-25 08:26:56

hackbod 在评论中给出了解决方案:

“使用 getApplicationContext().registerReciever() ”

hackbod gave the solution at the comments:

" use getApplicationContext().registerReciever() "

旧伤还要旧人安 2024-09-25 08:26:56

嗯……感觉就像一个错误。他们一定是太早执行 is-a-BroadcastRecevier 检查了。您可能想要创建一个项目来演示该问题,然后将其发布到 b.android.com

就解决方法而言:

步骤#1:创建 IntentService

步骤#2:在 onHandleIntent() 中,执行实际的小部件更新工作,包括获取电池电量

步骤# 3:让您的AppWidgetProvideronUpdate()只需在您的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 level

Step #3: Have onUpdate() of your AppWidgetProvider just call startService() on your IntentService.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文