【问题标题】:getting battery level at android widget在 android 小部件上获取电池电量
【发布时间】:2010-09-11 15:39:18
【问题描述】:

我为 Android 编写了一个小部件,我正在尝试获取电池电量。 我试过使用

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

但我得到了错误: "IntentReceiver 组件不允许注册接收意图"

为什么? ACTION_BATTERY_CHANGED 是一个粘性意图,我没有注册接收器(第一个参数为空)。

有什么解决方法吗?

谢谢。

【问题讨论】:

标签: android android-widget battery receiver


【解决方案1】:

hackbod 在 cmets 给出了解决方案:

" 使用 getApplicationContext().registerReciever()"

【讨论】:

    【解决方案2】:

    嗯...感觉就像一个错误。他们必须过早地进行 is-a-BroadcastRecevier 检查。您可能想要创建一个演示问题的项目,然后将其发布到 b.android.com

    就解决方法而言:

    第 1 步:创建 IntentService

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

    第 3 步:让您的 AppWidgetProvider 中的 onUpdate() 只需在您的 IntentService 上调用 startService()

    【讨论】:

    • 或者只使用 getApplicationContext().registerReciever()。
    • @hackbod:在这种情况下,getApplicationContext() 的行为会不同于 onReceive() 传入的 Context
    • @Ran:对不起,她的评论是——除非她将其重写为答案,否则你无法接受。
    • @Ran:“StackOverflow 方式”是让您将其写入新答案,或编辑 CommonsWare 的答案(如果您有权限)以包含此信息。然后你就有了一个可以“接受”的答案。
    猜你喜欢
    • 1970-01-01
    • 2014-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-29
    • 1970-01-01
    相关资源
    最近更新 更多