Ventana emergente sobre la pantalla de llamada entrante

Quiero crear una ventana emergente personalizada en la pantalla de llamadas entrantes de Android donde deseo agregar información para el usuario. Quiero que la ventana emergente no deshabilite la capacidad de clics del fondo para que el usuario pueda responder la llamada.

Sé que es posible ya que muchas aplicaciones lo hacen, por ejemplo, la aplicación MeZeZe : enter image description here

Algo más de información :

  1. Un tema translúcido no funcionó ya que cancela la capacidad de clics de la actividad anterior.
  2. Un brindis no es una opción, no quiero que desaparezca.
  3. Sé que hay muchos hilos similares: leo muchos de ellos y ninguno responde mi problema específico.
  4. Ya sé cómo “hacer que algo suceda” una vez que una llamada es receptora, por lo que no hay necesidad de consejos de actividad de INCOMING_CALL.

Agradecería cualquier ayuda! Gracias

    Si desea mantener activada la Actividad de llamada, pero no tiene ningún control sobre su superposición, puede hacerlo llamando

    getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE); getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL); 

    En el método onCreate () de la actividad que se muestra sobre la llamada.

    Los parámetros de diseño utilizables junto con esto son:

     android:windowBackground="@android:color/transparent" android:windowIsTranslucent="true" android:windowAnimationStyle="@android:style/Animation.Translucent" 

    Esto funcionó para mí con algunas adiciones:

    En BroadcastReceiver agregué las siguientes líneas para la intención:

      i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 

    Además, agregué un retraso de aproximadamente 1,5 segundos antes de disparar la actividad de PopupWindow para asegurarme de que venga después de la pantalla del sistema de llamadas entrantes.

    En el archivo Manifest agregué:

       

    para asegurarse de que el diseño de la pantalla emergente sea translúcido.

    En el archivo xml de diseño de ventanas emergentes agregué las siguientes propiedades:

      android:windowAnimationStyle="@android:style/Animation.Translucent" android:windowBackground="@android:color/transparent" android:windowIsTranslucent="true" 

    Sin embargo, esta solución todavía tiene un inconveniente:

    La pantalla emergente aparece sobre la pantalla del sistema de llamadas entrantes y, por lo tanto, el usuario debe realizar una acción (como hacer clic en un botón, presionar una tecla o tocar la pantalla) para cerrar la pantalla emergente, ya que la pantalla de llamada entrante permanece debajo y no accesible hasta que se cierre la pantalla emergente.

    No solo mostrará la actividad en la pantalla de locking, sino que también permitirá recibir una llamada entrante detrás de la pantalla de actividad.

     @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); final Window win = getWindow(); win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); win.addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL); setContentView(R.layout.activity_main);