2011-07-18 15 views
2

私はブロードキャスト受信機を使用して電話状態の変化をキャッチします。 状態が最初に(State_OffHookのために)変更されても正常に動作しますが、呼び出しが終了しても反応しません。 は、これは私のコードです:Android:ブロードキャスト受信機での電話状態

String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);      
      if (TelephonyManager.EXTRA_STATE_OFFHOOK.equals(state)) {working fine} 
       else if (TelephonyManager.EXTRA_STATE_IDLE.equals(state)) {doesn't react} 

答えて

0

あなたはIDLE状態にあり、あなたが電話を取得するとき、それはOFFHOOK状態 とに行く何のコールを持っていない場合、あなたのコールは再びそれを終了IDLE状態

になると詳細は、この

How to know whether I am in a call on Android?

Eを参照してください DIT:

@Override 
    public void onCallStateChanged(int state, String incomingNumber) { 
     super.onCallStateChanged(state, incomingNumber); 

     switch (state) { 
      case TelephonyManager.CALL_STATE_IDLE: 
       // Toast.makeText(context, "Idle", Toast.LENGTH_LONG).show(); 
       if(UDF.phoneState != TelephonyManager.CALL_STATE_IDLE) { 
        //Here you are came from offhook because value of UDF.phoneState != TelephonyManager.CALL_STATE_IDLE 
        //IDLE is calls many times so you have to keep track by a static variable like UDF.phoneState 
       } 
       break; 
      case TelephonyManager.CALL_STATE_OFFHOOK: 
       //Toast.makeText(context, "Idle", Toast.LENGTH_LONG).show(); 
       break; 
      case TelephonyManager.CALL_STATE_RINGING: 
       //Toast.makeText(context, "Idle", Toast.LENGTH_LONG).show(); 
       endCallIfBlocked(incomingNumber); 
       break; 

      default: 
       break; 
     } 
     UDF.phoneState = state; 
    } 
+0

私は知っている、問題は私が電話で変更しようとしているということです。状態がOFF_HOOKの仕事であり、その電話がIDLEに戻ったときに動作しません。あなたが送信したリンクのコードに変更しようとしましたが、それでも同じ問題があります。 – ItayM

+0

私は自分の答えを編集しましたが、問題が残っていても、ちょうどあなたが何を望んでいるのか教えてください。 – Dharmendra

+0

@Dharmendra、あなたは 'BroadcastReceiver'の電話状態をキャッチする必要があります。それは十分だ。あなたがリスナーの状態を追跡しても、ものはまだ間違っています。つまり、あなたの道ではなく、 'BroadcastReceiver'で追跡してください。どうもありがとうございます :-) –

関連する問題