Насколько я помню, защита от кражи Avast позволяет вам установить «секретный пин-код», который вы можете набрать, чтобы открыть пользовательский интерфейс. Что происходит, когда я набираю его, так это то, что вызов не проходит, затем номеронабиратель немедленно закрывается и открывается пользовательский интерфейс (или пользовательский интерфейс выходит за пределы действия номеронабирателя. Я забыл).
Я как-то реализовал это, но вместо прерывания вызова он уходит в фон (зеленая строка состояния, звонит телефон и т. д.), а моя активность идет впереди него.
Как прервать вызов, открывая свою собственную активность, когда я набираю определенный номер?
Некоторый код в моем подходе:
Широковещательный приемник для звонков:
public class OutgoingCallReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// Match if action is outgoing call.
Intent i = new Intent();
i.setAction(HelperClass.ACTION_NEW_OUTGOINGCALL);
i.setClassName(HelperClass.PACKAGE_NAME, HelperClass.CLASS_NAME_OUTGOING);
i.putExtra(HelperClass.CONTACT_KEY, "contact");
i.putExtra(HelperClass.CLIENT_DEVICE_KEY, "DUMMY");
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
// Apparently, this doesn't work
abortBroadcast();
// --------------- FAILED ATTEMPT ---------------------
// if (intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)) {
// TelephonyManager tm = (TelephonyManager) context
// .getSystemService(Context.TELEPHONY_SERVICE);
// try {
// // Java reflection to gain access to TelephonyManager's
// // ITelephony getter
// Log.v(HelperClass.TAG, "Get getTeleService...");
// Class c = Class.forName(tm.getClass().getName());
// Method m = c.getDeclaredMethod("getITelephony");
// m.setAccessible(true);
// com.android.internal.telephony.ITelephony telephonyService =
// (ITelephony) m.invoke(tm);
// } catch (Exception e) {
// e.printStackTrace();
// Log.e(TAG,
// "FATAL ERROR: could not connect to telephony subsystem");
// Log.e(TAG, "Exception object: " + e);
// }
}
}
}
Неудачная попытка: ITelephony не найден. Неудачная попытка исходила из https://stackoverflow.com/a/5314372/3979290.
ОБНОВЛЕНИЕ: Пытался реализовать, не удалось. Не знаете, как реализовать: Как повесить исходящий вызов в Android?
Также просмотрено: Как прервать исходящий вызов после фиксированного количества секунд?