2012-02-23 13 views
5

con statrtActivity(callIntent), la llamada se va y luego tengo que esperar unos segundos y terminar automáticamente. para finalizar mi llamada, he tomado mycalss extiende Broadcastreceiver luego en ese onreceive() que implementé. en ese método solo tengo que configurar el número antiguo y el número nuevo y se está imprimiendo pan tostado. Lo que quiero exactamente es terminar de llamar lo que necesito escribir. y cómo llamar al método de recepción de mi clase? plase ayúdame No llegué a ningún lado.cómo terminar mi llamada saliente.

@Override 
       public void onReceive(Context context, Intent intent) {         
        final String oldNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);   
        this.setResultData(newPhNnumber);             
        final String newNumber = this.getResultData(); 
        if((newNumber!=null)&&(newNumber!=oldNumber)) 
        { 
        String msg = "Intercepted outgoing call. Old number " + oldNumber + ", new number " + newNumber; 
        Toast.makeText(context, msg, Toast.LENGTH_LONG).show(); 
        this.abortBroadcast();----> what it does? 
       } 

Respuesta

3

Usted puede intentar esto:

TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); 
try { 
    Class c = Class.forName(tm.getClass().getName()); 
    Method m = c.getDeclaredMethod("getITelephony"); 
    m.setAccessible(true); 
    ITelephony telephonyService = (ITelephony) m.invoke(tm); 

    telephonyService.endCall(); 

} catch (Exception e) { 
    e.printStackTrace(); 
} 
+0

Probé su código, pero que no parece para finalizar la llamada. Utilicé 'TelephonyManager.CALL_STATE_OFFHOOK' para verificar el estado y luego finalizarlo. ¿Alguna idea? –

0

sólo tiene que abortar la llamada saliente a través siguiente código

public void onReceive(Context context, Intent intent) { 
    // TODO Auto-generated method stub 

    if (intent.getAction() 
      .equals("android.intent.action.NEW_OUTGOING_CALL")) { 

     phoneNo = intent 
       .getStringExtra(Intent.EXTRA_PHONE_NUMBER); 

     if (phoneNo.isBlocked(blockNo)) { 
      setResultData(null); 

     } 
    } 
} 
+0

'phoneNo' es nulo ... –

+0

Agregue este permiso" PROCESS_OUTGOING_CALLS "si no lo agregó? –

+0

Sí, lo descubro ... Utilicé transmisión de cambio de estado de teléfono en lugar de saliente ... Gracias por cierto ... –

Cuestiones relacionadas