BATTERY_CHANGED イベントをリッスンする必要があるウィジェットがありますが、このイベントは保護されており、マニフェストから宣言できないため、Application コンストラクターから新しい BroadcastReceiver を作成します。
public void onCreate() {
super.onCreate();
if (DEBUG) Log.d(TAG, "onCreate()");
// Register receivers
if (receiver == null) {
receiver = new MYReceiver(this);
}
// Create new intentfilter
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(Intent.ACTION_BATTERY_CHANGED);
registerReceiver(receiver, intentFilter);
}
次に、Receiver から、RemoteViews を使用して実際にウィジェットを更新する AppWidgetProvider の静的メソッドを呼び出します。1 時間が経過するまではすべてが問題なく動作し、その後はレシーバーが消え、ウィジェットが更新されなくなります。2.2.1 ファームウェアを搭載した Droid でこれをテストしています。
私が間違っているのは何ですか?これはウィジェットを更新する正しい方法ですか (私はそのイベントが必要なだけなので、必要ない場合はサービスを提供したくありません)。受信機がまだそこにあることを時々確認するために、AlarmManager を使用する必要がありますか? 私はこれを行うことができますか?
ありがとう。