2011-07-07 6 views
5

estoy usando esto:¿Cómo encontrar el número de salida en el administrador de telefonía

public void onCallStateChanged(int state, String incomingNumber) 

que está escuchando:

telephonyManager.listen(listener,PhoneStateListener.LISTEN_CALL_STATE); 

Quiero saber tanto las llamadas salientes y entrantes, pero por ahora solo me dan llamadas entrantes (cuando el estado cambia sonando). ¿Alguien puede decirme cuándo puedo detectar la llamada saliente y su final

También hay una manera de simular las llamadas salientes en Eclipse emulator. fue capaz de hacer eso para las llamadas entrantes a través del control del emulador en eclipse.

Respuesta

13

Utilice un oyente de difusión con un parámetro de cadena android.intent.action.NEW_OUTGOING_CALL para el IntentFilter y no olvide dar permiso en AndroidMenifest al PROCESS_OUTGOING_CALLS. Esto funcionará Siempre que haya una llamada saliente, se mostrará un mensaje de brindis. El código está abajo.

public static final String outgoing = "android.intent.action.NEW_OUTGOING_CALL" ; 
IntentFilter intentFilter = new IntentFilter(outgoing); 
BroadcastReceiver OutGoingCallReceiver = new BroadcastReceiver() 
{ 
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     // TODO Auto-generated method stub 
     String outgoingno = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); 
     Toast.makeText(context, "outgoingnum =" + outgoingno,Toast.LENGTH_LONG).show(); 
    } 
}; 
registerReceiver(brForOutgoingCall, intentFilter); 
1

crear una nueva clase, vamos a decir MyPhoneReceiver, se extiende desde BroadcastReceiver, y poner en práctica el método OnReceive.

public class MyPhoneReceiver extends BroadcastReceiver{ 
    @Override 
    public void onReceive(Context context, Intent intent){ 

     String phoneNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER); 

    } 
} 

En otra clase, por no decir, MainActivity.class dentro método onCreate. por ejemplo.

IntentFilter filter = new IntentFilter("android.intent.action.NEW_OUTGOING_CALL"); 
    MyPhoneReceiver myPhoneReceiver = new MyPhoneReceiver(); 
    registerReceiver(myPhoneReceiver,filter); 

En el AndroidManifest.xml

<receiver 
    android:name=".MyPhoneReceiver"> 
    <intent-filter> 
    <action android:name="android.intent.action.NEW_OUTGOING_CALL" /> 
    </intent-filter> 
</receiver> 

y también en el AndroidManifest.xml, añadir:

<uses-permission 
    android:name="android.permission.PROCESS_OUTGOING_CALLS"> 
</uses-permission> 
Cuestiones relacionadas