Для того чтобы перехватить ваш звонок, вам просто нужно:
1. Сделайте пакет с именем. com.android.internal.telephony;
2. В этом пакете создайте файл интерфейса с именем ITelephony.
и напишите этот код в этом файле интерфейса.
boolean endCall();
void answerRingingCall();
void silenceRinger();
Теперь в вашем классе, где вы хотите, чтобы перехватить вызов продлить этот класс BroadcastReceiver
и onReceive()
функции написать следующий код.
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
try {
Class c = Class.forName(tm.getClass().getName());
Method m = c.getDeclaredMethod("getITelephony");
m.setAccessible(true);
telephonyService = (ITelephony) m.invoke(tm);
Bundle bundle = intent.getExtras();
String phoneNumber = bundle.getString("incoming_number");
Log.d("INCOMING", phoneNumber);
if ((phoneNumber != null)) {
telephonyService.endCall();
Log.d("HANG UP", phoneNumber);
}
} catch (Exception e) {
e.printStackTrace();
}
Thats it.
Я перехватил исходящий вызов, но не в состоянии понять логику входящих звонков и их перехватов, упомянутых на этих страницах. – Zubair
Возможный дубликат [Завершить вызов в android программно] (http://stackoverflow.com/questions/18065144/end-call-in-android-programmatically) – Flow