开发者

getting battery level at android widget

开发者 https://www.devze.com 2023-01-15 13:27 出处:网络
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));

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 w开发者_StackOverfloworkaround?

Thanks.


hackbod gave the solution at the comments:

" use getApplicationContext().registerReciever() "


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.

0

精彩评论

暂无评论...
验证码 换一张
取 消