Идентификатор вызывающего абонента на Android — Как отключить / отложить экран входящего вызова по умолчанию?

#android #telephonymanager

#Android #telephonymanager

Вопрос:

Мы разрабатываем приложение для идентификации вызывающего абонента, и до сих пор мы можем заменить экран входящего вызова по умолчанию нашим собственным макетом / экраном идентификатора вызывающего абонента следующимhttp://developer.android.com/reference/android/telephony/TelephonyManager.html с помощью CALL_STATE_RINGING

Однако проблема, с которой мы сталкиваемся, заключается в следующем:
а) Когда телефон получает входящий вызов, экран входящего вызова по умолчанию получает приоритет и отображается немедленно
б) через 1-2 секунды появляется экран идентификации вызывающего абонента. мы хотим полностью избежать / подавить / отложить экран входящего вызова по умолчанию, чтобы пользовательский интерфейс был лучше.

Комментарии:

1. Как вы это сделали? Я использовал ваш код ниже, но я все еще вижу экран вызывающего абонента по умолчанию, после чего появляется мой.

Ответ №1:

Я не нашел способа полностью отключить экран по умолчанию. Однако меньшая задержка (500 мс) перед началом работы работает для меня хорошо. Кроме того, у меня есть следующие флаги в моем намерении начать свою пользовательскую активность. Мой код выглядит примерно так :

 if (TelephonyManager.EXTRA_STATE_RINGING.equals(state))
        {
            SystemClock.sleep(500 * 1);
            Log.d("MPR", "Its Ringing ["   number   "]");
            Intent startMain = new Intent();
            startMain.setClassName("com.foo.TIC", "com.foo.TIC.TestInComing");
            startMain.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_NO_USER_ACTION);
            startMain.putExtra("PNO", number);
            context.startActivity(startMain);
        }
  

Ответ №2:

Если мы используем широковещательный приемник, то можно использовать наше собственное диалоговое окно и экран.