salientes saliente realizar puede online numero nombre mientras llamadas llamada identificador está desactivar con como bloqueo bloquear activado android state phone-call

realizar - Detección de llamadas salientes y eventos de bloqueo de llamadas en Android



identificador de llamadas online (3)

Debe crear un BroadcastReceiver:

public class CallReciever extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals( TelephonyManager.EXTRA_STATE_RINGING)) { // Phone number String incomingNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER); // Ringing state // This code will execute when the phone has an incoming call } else if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals( TelephonyManager.EXTRA_STATE_IDLE) || intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals( TelephonyManager.EXTRA_STATE_OFFHOOK)) { // This code will execute when the call is answered or disconnected } } }

Debe registrar su aplicación para escuchar estos intentos en el manifiesto:

<receiver android:name=".CallReciever" > <intent-filter> <action android:name="android.intent.action.PHONE_STATE" /> </intent-filter> </receiver>

Tengo un requisito en el que quiero detectar dos tipos de eventos relacionados con las llamadas en Android

  1. Cada vez que se realiza una llamada, mi aplicación debe conocer esto junto con el número al que se llama
  2. Cuando la llamada se cuelga (debido al éxito / fracaso), mi aplicación debería conocer esto junto con el motivo de la suspensión

¿Es esto posible en Android?


Hay una solución más simple utilizando solo TelephonyManager y PhoneStateListener. Ni siquiera tiene que registrar un BroadcastReceiver.

public class MyPhoneStateListener extends PhoneStateListener { @Override public void onCallStateChanged(int state, String incomingNumber) { switch (state) { //Hangup case TelephonyManager.CALL_STATE_IDLE: break; //Outgoing case TelephonyManager.CALL_STATE_OFFHOOK: break; //Incoming case TelephonyManager.CALL_STATE_RINGING: break; } } }

Y para registrarlo:

public static void registerListener(Context context) { ((TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE)).listen(new MyPhoneStateListener(), PhoneStateListener.LISTEN_CALL_STATE); }