Как отклонять вызов программно в android

В моем приложении я сохраню список контактов.

Любые вызовы от контактов в списке будут удалены. Они будут отображаться при пропущенных вызовах, но телефон не будет звонить.

Сначала создайте этот интерфейс:

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

Затем создайте этот class, который расширяет 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(); } } 

Это будет блокировать только один номер телефона, но вы получите смысл.

В вашем манифесте добавьте следующее:

          

Скачайте class ITelephony отсюда .

Затем поместите его в пакет (создайте новый пакет) com.android.internal.telephony. Затем импортируйте пакет в соответствующий class и для отклонения вызова используйте метод endCall()

Давайте будем гением компьютера.