2010-09-11 90 views
9

我爲Android編寫了一個小部件,並試圖獲取電池電量。 我使用在android小部件中獲取電池電量

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

嘗試,但我得到的錯誤: 「IntentReceiver組件不允許註冊以接收意圖」

爲什麼? ACTION_BATTERY_CHANGED是一個粘性意圖,我沒有註冊一個接收器(在第一個參數中爲null)。

任何解決方法?

謝謝。

+0

Android的錯誤嗎? http://code.google.com/p/android/issues/detail?id=5111 – Ran 2010-09-12 07:35:22

回答

8

hackbod了在註釋的解決方案:

「使用getApplicationContext()registerReciever()。」

3

嗯...感覺像一個錯誤。他們必須儘快檢查is-a-BroadcastRecevier。您可能想創建一個演示該問題的項目,然後將其發佈到b.android.com

在解決辦法方面:

第1步:創建一個IntentService

第2步:在onHandleIntent(),做你的實際窗口更新工作,包括讓電池電量

步驟# 3:您的AppWidgetProvideronUpdate()只需在您的IntentService上撥打startService()即可。

+12

或者只是使用getApplicationContext()。registerReciever()。 – hackbod 2010-09-11 19:38:02

+0

@hackbod:在這種情況下,'getApplicationContext()'的行爲會不同於'onReceive()'傳入的'Context'嗎? – CommonsWare 2010-09-11 19:44:33

+0

@hackbod:它的工作!謝謝! – Ran 2010-09-12 08:03:08