2013-12-25 2 views
0

Я использую этот код для вызова:ли что-то, когда другая сторона отвечает на вызов и закрыть на вызов

Uri callUri = Uri.parse("tel://0000"); 
Intent callIntent = new Intent(Intent.ACTION_CALL,callUri); 
callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_NO_USER_ACTION); 
startActivity(callIntent); 

я хотел бы сделать что-то, когда:

  • другая сторона отвечает на вызов
  • другая сторона закрыть вызов
  • пользователь закрыть звонок
  • пользователь закрывает вызов, прежде чем другая сторона ответит на звонок

и как закрыть на вызов

Заранее спасибо

ответ

0

Вы должны использовать TelephonyManager для обработки вызовов. Взгляните на следующий класс ...

private class PhoneCallListener extends PhoneStateListener { 

     private boolean phoneInACall = false; 

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

      if (TelephonyManager.CALL_STATE_RINGING == state) { 
       // THE PHONE IS CURRENTLY RINGING! 
      } 

      if (TelephonyManager.CALL_STATE_OFFHOOK == state) { 
       // THE PHONE IS ACTIVE, DIALING OR ON HOLD! 
       phoneInACall = true; 
      } 
      if (TelephonyManager.CALL_STATE_IDLE == state) { 
       // IDLE - NO ACTIVITY. IF PHONEINACALL WAS TRUE, IT MEANS THE CALL ENDED 
       if (phoneInACall) { 
        // RESTART YOUR MAIN ACTIVITY BECAUSE A CALL ENDED! 
        phoneCalling = false; 
       } 

      } 
     } 
    } 

Вы можете использовать этот класс в вашем OnCreate методом путем создания экземпляра этого PhoneStateListener и получение экземпляра TelephonyManager назвать слушать метод слушать, чтобы получать уведомления об изменениях в указанных состояниях телефонии ...

PhoneCallListener phoneCallListener = new PhoneCallListener(); 
TelephonyManager telManager = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE); 
telManager.listen(phoneCallListener, PhoneStateListener.LISTEN_CALL_STATE); 

Этот код должен помочь вам решить ваши проблемы :) Удачи!

Смежные вопросы