1

正常に動作するインテント フィルターをいくつか作成しましたが、画面/電話が変更された後の状態しか通知されません。現在の状態を確認するにはどうすればよいですか? これは私のフィルターです -

    receiver = new EventHandler();
    IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
    filter.addAction(Intent.ACTION_SCREEN_ON);
    filter.addAction(Intent.ACTION_SCREEN_OFF);
    filter.addAction(TelephonyManager.ACTION_PHONE_STATE_CHANGED); // for calls
    registerReceiver(receiver, filter);

バッテリーの状態が変わっていないのに、すぐに通知が届きます。他のインテントがそのようなダミーの通知を発行した場合はいいでしょう。

ありがとう。

4

1 に答える 1

1

ACTION_BATTERY_CHANGEDstickyブロードキャストであり、常に保持されるため、すぐにバッテリー状態を返すだけです。

他の 3 つは、「アクション」が発生したときにのみ送信されるワンショット ブロードキャスト インテントです。インスタント状態を取得するには、さまざまな「マネージャー」クラスでメソッドを呼び出す必要があります。

たとえば、TelephonyManagerにはgetCallState()メソッドがあり、PowerManagerにはメソッドがありisScreenOn()ます。

私はどちらも自分で試したことはありませんが、ドキュメントは、必要なものに対して機能することを示唆しています。

見る...

テレフォニーマネージャー

PowerManager

于 2012-07-28T17:20:05.690 に答える