todas teléfono secretos para número numeros numero llamadas las entrantes desconocidos cómo como codigos celulares bloquear android telephonymanager phone-state-listener

teléfono - como bloquear un numero en android



Recuperar el número de teléfono de la llamada entrante en Android (3)

Aquí hay una implementación que le permitirá recuperar el número de teléfono si se trata de una llamada entrante como incomingNumber y también cuando la llamada ha TERMINADO: tenga en cuenta el código del Manejador ().

private class PhoneCallListener extends PhoneStateListener { private boolean isPhoneCalling = false; @Override public void onCallStateChanged(int state, String incomingNumber) { if (TelephonyManager.CALL_STATE_RINGING == state) { // phone ringing Log.i(LOG_TAG, "RINGING, number: " + incomingNumber); } if (TelephonyManager.CALL_STATE_OFFHOOK == state) { // active Log.i(LOG_TAG, "OFFHOOK"); isPhoneCalling = true; } if (TelephonyManager.CALL_STATE_IDLE == state) { // run when class initial and phone call ended, need detect flag // from CALL_STATE_OFFHOOK Log.i(LOG_TAG, "IDLE number"); if (isPhoneCalling) { Handler handler = new Handler(); //Put in delay because call log is not updated immediately when state changed // The dialler takes a little bit of time to write to it 500ms seems to be enough handler.postDelayed(new Runnable() { @Override public void run() { // get start of cursor Log.i("CallLogDetailsActivity", "Getting Log activity..."); String[] projection = new String[]{Calls.NUMBER}; Cursor cur = getContentResolver().query(Calls.CONTENT_URI, projection, null, null, Calls.DATE +" desc"); cur.moveToFirst(); String lastCallnumber = cur.getString(0); } },500); isPhoneCalling = false; } } } }

Y luego agregue e inicialice el oyente en su código onCreate o onStartCommand:

PhoneCallListener phoneListener = new PhoneCallListener(); TelephonyManager telephonyManager = (TelephonyManager) this .getSystemService(Context.TELEPHONY_SERVICE); telephonyManager.listen(phoneListener, PhoneStateListener.LISTEN_CALL_STATE);

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

¿Podrían ayudarme porque no puedo encontrar información sobre esto? ¿Por dónde empiezo y cómo puedo obtener el número de teléfono?

Bueno, actualmente mi código se ve a continuación. Cuando realizo la llamada, CustomBroadcastReceiver lo detecta y se imprime el mensaje de registro. Puedo recuperar el número de teléfono del paquete. ¡Pero! No puedo hacer funcionar el CustomPhoneStateListener. Como puede ver, he registrado mi escucha personalizada de PhoneState en el receptor, pero el mensaje de registro nunca se imprime desde la clase CustomPhoneStateListener. ¿Qué es lo que me falta aquí? Es mi pensamiento correcto?

<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); }


El método reemplazado en CustomPhoneStateListener debe CustomPhoneStateListener onCallStateChanged() (y no onCallStateChange() ).

Esto podría haber sido detectado por el compilador de Java si hubiera tenido la anotación @Override , como la que tiene para onReceive() .