Pregunta

Me gustaría recuperar numero de teléfono de la llamada entrante y hacer algo con él, como el do en http://blog.whitepages.com/2009/02/27/caller-id-by-whitepages-a-new-android-app-that-puts-telemarketers-on-alert/

¿Me puede ayudar porque no puedo encontrar ninguna información sobre esto. ¿por dónde empezar y cómo consigo controlar la numero de teléfono?


La autorización así que actualmente mi código es el de abajo. Cuando coloco la llamada del CustomBroadcastReceiver coge y el mensaje de registro se imprime. Puedo recuperar el número de teléfono desde el haz. ¡Pero! No puedo conseguir HTE CustomPhoneStateListener de trabajo. Como se puede ver que he registrado mi oyente customPhoneState al receptor, pero el mensaje de registro nunca se elaborará a partir del de la clase CustomPhoneStateListener. ¿Qué soy yo mi falta aquí? ¿Es correcta mi pensamiento?


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

</application>
<uses-sdk android:minSdkVersion="5" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

public class CustomPhoneStateListener extends PhoneStateListener {

private static final String TAG = "CustomPhoneStateListener";

public void onCallStateChange(int state, String incomingNumber){

    Log.v(TAG, "WE ARE INSIDE!!!!!!!!!!!");
    Log.v(TAG, incomingNumber);

    switch(state){
        case TelephonyManager.CALL_STATE_RINGING:
            Log.d(TAG, "RINGING");
            break;
    }   
}

public class CustomBroadcastReceiver extends BroadcastReceiver {

private static final String TAG = "CustomBroadcastReceiver";

@Override
public void onReceive(Context context, Intent intent) {
    Log.v(TAG, "WE ARE INSIDE!!!!!!!!!!!");
    TelephonyManager telephony = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
    CustomPhoneStateListener customPhoneListener = new CustomPhoneStateListener();

    telephony.listen(customPhoneListener, PhoneStateListener.LISTEN_CALL_STATE);


    Bundle bundle = intent.getExtras();
    String phoneNr= bundle.getString("incoming_number");
    Log.v(TAG, "phoneNr: "+phoneNr);

}
¿Fue útil?

Solución

PhoneStateListener . Tiene una onCallStateChanged manipulador; uno de los argumentos proporcionados que obtendrá es un String que contiene el número de teléfono entrante.

Otros consejos

Su método reemplazado en CustomPhoneStateListener debería llamarse onCallStateChanged() (y no onCallStateChange()).

Esto habría sido visto por el compilador de Java si hubiera tenido la anotación @Override, al igual que usted tiene para onReceive().

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top