Cómo rechazar una llamada progtwigticamente en android

En mi aplicación, mantendré una lista de contactos.

Se eliminarán todas las llamadas de los contactos en la lista. Aparecerán bajo llamadas perdidas pero el teléfono no sonará.

Primero crea esta interfaz:

  public interface ITelephony { boolean endCall(); void answerRingingCall(); void silenceRinger(); } 

Luego crea esta clase que extienda BroadcastReceiver

 public class IncomingCallReceiver extends BroadcastReceiver { private ITelephony telephonyService; private String blacklistednumber = "+458664455"; @Override public void onReceive(Context context, Intent intent) { 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); Bundle bundle = intent.getExtras(); String phoneNumber = bundle.getString("incoming_number"); Log.e("INCOMING", phoneNumber); if ((phoneNumber != null) && phoneNumber.equals(blacklistednumber)) { telephonyService.silenceRinger(); telephonyService.endCall(); Log.e("HANG UP", phoneNumber); } } catch (Exception e) { e.printStackTrace(); } } 

Esto solo bloqueará ese único número de teléfono, pero obtienes el punto.

En tu manifiesto agrega esto:

          

Descargue la clase de ITelephony desde aquí .

Luego colóquelo en un paquete (haga un nuevo paquete) de com.android.internal.telephony. Luego importe el paquete a la clase apropiada y para rechazar una llamada use el método endCall()