Tener la aplicación ejecutándose sobre otra aplicación

Quiero hacer una actividad que se puede abrir por encima de CUALQUIER aplicación.

Normalmente, incluso cuando la actividad se establece como diálogo, al cambiar a mi aplicación, ves mi aplicación y, en segundo plano, ves el lanzador:

PERO, quiero que la aplicación vaya por encima de cualquier aplicación como esta: (hecho en photoshop):

Vi esta pregunta Crear una ventana de superposición del sistema (siempre en la parte superior) , pero en ICS no hay funcionalidad al diseño. Además, quiero dar un cuadro de diálogo de mi aplicación sin minimizar la otra aplicación …

Hay un montón de aplicaciones que muestran una vista flotante encima de todo como: airbrowser, LilyPad, Stick, AirTerm, Smart Taskbar, aircalc …

De todos modos, para lograr esta característica, debe tener un permiso especial llamado "android.permission.SYSTEM_ALERT_WINDOW", y usar algo como eso:

final WindowManager.LayoutParams param=new WindowManager.LayoutParams(); param.flags=WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; final View view=findViewById(R.id.my_floating_view); final ViewGroup parent=(ViewGroup)view.getParent(); if(parent!=null) parent.removeView(view); param.format=PixelFormat.RGBA_8888; param.type=WindowManager.LayoutParams.TYPE_SYSTEM_ALERT; param.gravity=Gravity.TOP|Gravity.LEFT; param.width=parent!=null?LayoutParams.WRAP_CONTENT:view.getLayoutParams().width; param.height=parent!=null?LayoutParams.WRAP_CONTENT:view.getLayoutParams().height; final WindowManager wmgr=(WindowManager)getApplicationContext().getSystemService(Context.WINDOW_SERVICE); wmgr.addView(view,param); // TODO handle overlapping title bar and/or action bar // TODO you must add logic to remove the view // TODO you must use a special permission to use this method :android.permission.SYSTEM_ALERT_WINDOW // TODO if you wish to let the view stay when leaving the app, make sure you have a foreground service running. 

Soy uno de los desarrolladores del SDK de Tooleap, y también nos ocupamos de este problema. Básicamente, no es necesario utilizar SYSTEM_ALERT_WINDOW para mostrar una actividad encima de otra. Usted puede apenas exhibir una actividad "encogida" regular con un fondo transparente.

Para realizar una "actividad reducida, cambie los parámetros de la ventana de actividad de altura y ancho:

 WindowManager.LayoutParams params = getWindow().getAttributes(); params.x = ...; params.y = ...; params.width = ...; params.height = ...; this.getWindow().setAttributes(params); 

Para crear un fondo transparente añada a la definición de actividad en el archivo de manifiesto:

 android:theme="@android:style/Theme.Translucent" 

De esta manera, puede crear la ilusión de una actividad flotante:

Tenga en cuenta que sólo se reanudará la actividad de primer plano, mientras que la de fondo se interrumpe. Pero para la mayoría de las aplicaciones esto no debería ser un problema.

Ahora todo lo que queda es cuándo lanzar la actividad flotante.

Aquí hay un ejemplo de una aplicación de calculadora "flotante" que usa una actividad regular. Tenga en cuenta que la actividad debajo de la calculadora pertenece a otra aplicación.

Imágenes de Tooleap Calculator

  • la importación com.badlogic.gdx.graphics.gl10 no se puede resolver
  • Error al inflarse al extender una clase
  • La aplicación no responde después de reanudarla
  • Cómo utilizar URLEncoder con UTF-8
  • Uso de jarras que utilizan clases java.beans (Introspector, BeanInfo o PropertyDescriptor)
  • Android añadiendo pie de página a ListView addFooterView ()?
  • No se encontró ningún identificador de recurso para el atributo 'layout_behavior' en el paquete
  • Diferencia entre setBackgroundDrawable () y setBackground ()
  • Cómo hacer PDF en Android
  • Dependencias de Gradle: compilar el proyecto por ruta relativa
  • Android: fija la orientación de la pantalla sólo para una página (diferencia telefónica)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.