2012-03-04 20 views
5

Actualmente estoy interceptando una llamada y reenviándola a mi actividad personalizada "oncallscreen". Sin embargo, antes de llegar a mi pantalla, se mostrará el valor predeterminado "oncallscreen". ¿Cómo puedo ocultar/cancelar esta pantalla? Así que cuando recibo una llamada obtengo solo mi pantalla personalizada.Cómo puedo ocultar/cancelar la pantalla entrante predeterminada

@Override 
public void onReceive(Context context, Intent intent) { 
    Bundle extras = intent.getExtras(); 
    if (extras != null) { 
     String state = extras.getString(TelephonyManager.EXTRA_STATE); 
     Log.w("DEBUG", state); 
     if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) { 
      String phoneNumber = extras 
        .getString(TelephonyManager.EXTRA_INCOMING_NUMBER); 

Respuesta

1

Usted necesita para interceptar la emisión android.intent.action.PHONE_STATE con prioridad más alta posible, entonces, si en su BroadcastReceiver.onReceive() se le cancela la emisión a través BroadcastReceiver.abortBroadcast() usted será capaz de detener por defecto pantalla de llamada entrante para ser mostrado, ya que la aplicación por defecto no recibirá emisión de llamadas entrantes. Después de eso, puedes mostrar tu propia actividad.

+1

No estoy seguro de si esto solía funcionar, pero no funciona en Android 4.1.2 - la transmisión PHONE_STATE no está ordenada, por lo que se produce un error al intentar cancelar la transmisión ya que no puede cancelar transmisiones no ordenadas . –

+0

Cuál es la prioridad más alta para recibir la transmisión de llamadas entrantes. – VickyS

Cuestiones relacionadas