Aplicación Android de telefonía que mantiene el foco en las llamadas entrantes

Estoy desarrollando una aplicación de telefonía personalizada que es capaz de recibir llamadas. Utilizando este código para gestionar la llamada entrante https://code.google.com/p/auto-answer/source/browse/trunk/src/com/everysoft/autoanswer/AutoAnswerIntentService.java

Desafortunadamente mi aplicación pierde el foco en la llamada entrante.

ESTA era una solución parcial para las llamadas salientes Android– Teléfono aplicación que mantiene el foco en saliente y entrante phoneCall

¿Qué pasa con las llamadas entrantes? ¿Cómo puedo mantener el foco en mi aplicación personalizada?

Estoy adivinando esto podría implicar la descarga y la modificación del código fuente como simplemente acceder al SDK da poco control sobre la aplicación de teléfono incorporada.

Puesto que la referencia que hizo sobre las llamadas salientes es aceptable, entonces puede colocar una actividad delante de la pantalla de llamadas entrantes poco después de que se muestre. La dificultad al hacer esto es que el estado de llamada cambiará a "RINGING" y luego también "OFFHOOK", pero el teléfono no ha mostrado el InCallScreen cuando éstos se transmiten.

Al igual que el mensaje que mencionaste, esta solución no incorpora la función del teléfono en la aplicación (como una webview para la navegación web), sino que coloca una actividad delante de InCallScreen poco después de que se muestre.

Para las llamadas entrantes, es necesario retrasar el lanzamiento de su actividad, como en este post:

Android – Personalizado Nueva pantalla de llamadas entrantes

Usted puede poner cualquier cosa en la pantalla en el punto, la parte difícil es determinar el tiempo de retraso de modo que satisfaga sus necesidades (lo suficientemente lento para que el InCallScreen tiene la oportunidad de lanzar, pero lo suficientemente rápido como para ser mínimamente perjudicial).

Más allá de eso, incluso extender AOSP no ayudará a menos que tenga acceso a cada dispositivo físico donde se va a utilizar para enraizarlos o poner una compilación personalizada en ellos. El acceso a las funciones de PhoneApp no ​​es accesible a las aplicaciones que no son del sistema (el paquete com.android.phone).

Mencione el receptor de radiodifusión en el archivo manifest.xml.

<receiver android:name="com.example.incomingcall.IncomingCallReceiver" > <intent-filter> <action android:name="android.intent.action.PHONE_STATE" /> </intent-filter> </receiver> 

IncomingCallReceiver.java:

 public class IncomingCallReceiver extends BroadcastReceiver{ public void onReceive(Context context, Intent intent) { Bundle extras = intent.getExtras(); if (extras != null) { String state = extras.getString(TelephonyManager.EXTRA_STATE); if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) { Thread thread = new Thread(){ private int sleepTime = 400; @Override public void run() { super.run(); try { int wait_Time = 0; while (wait_Time < sleepTime ) { sleep(100); wait_Time += 100; } }catch (Exception e) { Toast.makeText(context, "Error Occured Because:" + e.getMessage(), Toast.LENGTH_SHORT).show(); } context.startActivity(new Intent(context,CustomActivity.class) .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)); } }; thread.run(); } } } } 
  • Cómo detectar el estado contestado o rechazado en la llamada saliente
  • Obtener la velocidad actual de Internet (móvil y Wifi) con Android
  • No se puede obtener cadena no vacía de PhoneStateListener :: onCallStateChanged
  • Obtener código de país
  • Android Cómo obtener el número de teléfono del teléfono Dual sim
  • Cómo determinar una llamada realizada es local o STD O ISD
  • TelephonyManager devuelve null para el número IMEI: ¿qué puede causar esto?
  • Cómo encontrar el número saliente en el administrador de telefonía
  • ¿Qué información proporciona Baseband en Android?
  • Obtener los detalles del último registro de llamadas después de finalizar la llamada utilizando el receptor de difusión
  • Detectar llamada en espera
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.