我为 Android 编写了一个小部件,我正在尝试获取电池电量。我试过使用
Intent batteryIntent = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
但我收到错误:“IntentReceiver 组件不允许注册接收意图”
为什么?ACTION_BATTERY_CHANGED 是一个粘性意图,我没有注册接收器(第一个参数为空)。
任何解决方法?
谢谢。
我为 Android 编写了一个小部件,我正在尝试获取电池电量。我试过使用
Intent batteryIntent = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
但我收到错误:“IntentReceiver 组件不允许注册接收意图”
为什么?ACTION_BATTERY_CHANGED 是一个粘性意图,我没有注册接收器(第一个参数为空)。
任何解决方法?
谢谢。
hackbod 在评论中给出了解决方案:
“使用 getApplicationContext().registerReciever()”
嗯……感觉像个bug。他们必须BroadcastRecevier过早地进行is-a-检查。您可能想要创建一个演示问题的项目,然后将其发布到b.android.com。
就解决方法而言:
步骤#1:创建一个IntentService
第 2 步:在onHandleIntent()中,进行实际的小部件更新工作,包括获取电池电量
第 3 步:onUpdate()让AppWidgetProvider您startService()的IntentService.