2012-03-14 13 views
2

発信コールに応答したときのステータスを取得する方法が必要です。ただし、OFFHOOK状態では、発信コール(ACTION_CALL)を呼び出すためにも使用しています。発信アクティビティをオーバーライドせずにawnsered状態を追加するにはどうすればよいですか?Androidで発信コールを受信する方法

public class OutgoingBroadcastReceiver extends BroadcastReceiver { 

private Intent mIntent; 
private String phonenumber = null; 
public static boolean wasRinging; 

@Override 
public void onReceive(Context context, Intent intent) { 
    mIntent = intent; 

    MyPhoneStateListener phoneListener = new MyPhoneStateListener(context); 
    TelephonyManager telephony = (TelephonyManager) context 
      .getSystemService(Context.TELEPHONY_SERVICE); 
    telephony.listen(phoneListener, PhoneStateListener.LISTEN_CALL_STATE); 

    phonenumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); 

} 

public class MyPhoneStateListener extends PhoneStateListener { 
    private final Context context; 

    public MyPhoneStateListener(Context context) { 
     this.context = context; 

    } 

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


     switch (state) { 

     case TelephonyManager.CALL_STATE_IDLE: 

      wasRinging = true; 
      break; 

     case TelephonyManager.CALL_STATE_OFFHOOK: 

       Log.e("%%%%%%%%%%%%%%%%%%%%%%%%%%%t", "OFFHOOK"); 
      if (UIUDialer.isOutgoingCall() == true) { 

       //Do my work when outgoing call is detected 
      } 

      else if (!wasRinging) 
      { 

        Log.e("%%%%%%%%%%%%%%%%%%%%%%%%%%%t", "WASRINGING"); 
       //Do my work when outgoing call is awnsered 

      } 



      context.sendBroadcast(new Intent("finish_incoming")); 
      wasRinging = true; 
      break; 

     case TelephonyManager.CALL_STATE_RINGING: 

      wasRinging = true; 
      break; 
     } 
    } 

} 

}

+0

ステート 'CALL_STATE_RINGING'は' OUTGOING_CALL'では**呼び出されません**ので、変数wasRingingは常にfalseに設定されます。 – Houcine

答えて

2

このために利用可能なパブリックAPIはありません。

0

ブール値wasRingingを使用してみませんか?

+0

あなたに助けと時間をいただき、ありがとうございました。私はあなたの提案に従って編集しました。私はPhoneStateListnerが私の放送受信機クラスの内部クラスであることを忘れていました。私のログ猫を見た後に、発信コールが応答されるとオフホークには入っていません。それは理にかなっていますか? – user1163234

+0

wasRingingがMyPhoneStateListenerクラスの内側にある必要があります – Andreas

+0

私のクラスは最終的にできますか? public static class MyPhoneStateListener extends PhoneStateListener { プライベートfinalコンテキストコンテキスト。 プライベート静的ブール値wasRinging; – user1163234

関連する問題