-1

こんにちは、ブロードキャストレシーバーを使用して、通話が「行われた」ときと、通話が「行われた」後、発信された通話が「接続された」ときに調べようとします。検索してこのコードを思いつきましたが、これは、電話をかけて電話をかけます。本当に必要なのは、電話がかかってきて接続されたときだけです。これについて私を導く助けをいただければ幸いです。

receiver = new BroadcastReceiver() {
               @Override
               public void onReceive(Context context, Intent intent) {
                  String action = intent.getAction();
                  TelephonyManager telephonyManager = (TelephonyManager) context
                          .getSystemService(Context.TELEPHONY_SERVICE);

                  if(action.equals(android.telephony.TelephonyManager.ACTION_PHONE_STATE_CHANGED)){
                       //action for phone state changed
                      Toast.makeText(context, "Receiver call status", Toast.LENGTH_SHORT).show();
                      Log.d("reciever","entered keep going");
                      if(telephonyManager.getDataState() == TelephonyManager.DATA_CONNECTED){
                          Toast.makeText(context, "Receiver call connected", Toast.LENGTH_SHORT).show();
                        }else{
                            Toast.makeText(context, "Receiver call not connected", Toast.LENGTH_SHORT).show();  
                        } 
                  }     
               }
            };
            IntentFilter filter = new IntentFilter();

            filter.addAction(android.telephony.TelephonyManager.ACTION_PHONE_STATE_CHANGED);

            registerReceiver(receiver,filter);
4

1 に答える 1

2

ここでは、呼び出しのすべての状態を見つけることができます。私がしたように、この状態を処理するだけです:

public class PhoneState extends PhoneStateListener {

@Override
public void onCallStateChanged(int state, String incomingNumber) {
    switch (state) {
        case TelephonyManager.CALL_STATE_IDLE:
            //Some Action
            break;
        case TelephonyManager.CALL_STATE_OFFHOOK:
            break;
        case TelephonyManager.CALL_STATE_RINGING:
            //Some Action
            break;
        //case TelephonyManager.ANOTHER_STATE: ...
    }
    }
}
于 2013-07-19T23:10:03.380 に答える