2011-08-09 4 views
0

バッテリーの低下、機内モードの有効化、Wi-Fiの無効化など、システムによってブロードキャストされた複数のインテントに基づいてアラームを有効/無効にしたい。複数のブロードキャストインテントを使用して同じものを制御する

マニフェストに必要なインテントを登録し、BroadcastReceiverとみなし、受け取ったインテントに基づいてアラームを設定します。

インテントの1つだけがブロードキャストされているときに、同時に登録されたインテントによって示されるすべての条件を考慮するにはどうすればよいですか?

例:「バッテリーOK」インテントがブロードキャストされます。この場合、通常は再びアラームを有効にしますが、飛行機モードがオンの場合は有効にしません。

私は、各条件の状態を共有された環境設定に更新することを考えていましたが、まったくクリーンなソリューションのようには思えませんでした。

いくつかのインテントは粘着性があり、いつでも取得できますが、BroadcastReceiverにブロードキャストインテントを登録することはできないため、他のインテントの状態を取得できないようです送信されます。

提案がありますか?

答えて

0

私が正しくあなたの質問を得た場合、あなたはあなたがこの

IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON); 
     filter.addAction(Intent.ACTION_BATTERY_CHANGED); 
     filter.addAction(Intent.ACTION_SCREEN_OFF); 
     BroadcastReceiver mReceiver = new Receiver(getApplicationContext()); 
     registerReceiver(mReceiver, filter); 

のような複数の意図に登録することができ、recevierにあなたが今

public void onReceive(Context arg0, Intent intent) { 
     // TODO Auto-generated method stub 

     if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { 


     } 

     else if (intent.getAction().equals(Intent.ACTION_BATTERY_CHANGED)) { 
     } 
のように放送されたものをテストすることができ、この を探していることがあり
+0

事実、私は自分の質問を説明するのが難しいと感じました...私は複数のイベントに登録する方法を知っていますが、私の質問は、あなたの答えにしたがって、 'ACTION_SCREEN_OFF'は放送されていますか? –

+0

あなたは放送受信機なしでいつでもバッテリーの状態を知ることができ、実際には以前の放送されたreading.Butを得るでしょう – Rasel

+0

はい、それは私が "いくつかの意図は粘着性がある"という意味です。たぶん、私は 'PendingIntents'を使って後でオリジナルの放送インテントのデータを検索することができます。 –

関連する問題