Gracias por tu tiempo.
Estoy haciendo esta aplicación que muestra un icono sobre la pantalla de inicio y otras aplicaciones (como mensajero fb) (ver img1) y cuando se presiona, el icono muestra una nueva actividad que tiene las opciones (ver img3). Pero tiene este problema:
- El icono se muestra detrás de mi nueva actividad de superposición (ver img3)
- fb messegner siempre aparece sobre mi aplicación (ver img2)
Así que estaba pensando que tal vez hay una manera de establecer las prioritys pantallas superpuestas?
¿Cómo puedo mostrar mi aplicación sobre otras aplicaciones que también atraen a más de otras aplicaciones?
¿Cómo puedo obtener el permiso del sistema que aparezca sobre la aplicación del sistema?
Por favor ayuda.
Img2 - Mi aplicación vs Fb mssgr vs Sistema de aplicación
Img3 - creo una nueva superposición de ventanas, pero yo quiero que mi primer icono appe
Los permisos en mi manifiesta:
<uses-permission android:name="android.permission.ACTION_MANAGE_OVERLAY_PERMISSION" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.CALL_PHONE" />
El Servicio del icono:
public class ServicioVentanaFlotanteIcono extends Service {
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
// Indica que mostrará el Layout ventana_flotante
final LayoutInflater inflater = (LayoutInflater) getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE);
assert inflater != null;
@SuppressLint("InflateParams") final View
customView = inflater.inflate(R.layout.ventana_flotante_icono, null);
// Inicializa el Windows Manager y muestra el Layout
wm = (WindowManager) getSystemService(WINDOW_SERVICE);
final WindowManager.LayoutParams parameters = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT);
wm.addView(customView, parameters);
....
}
}
El servicio con la pantalla gris de superposición y el icono blanco en la parte inferior:
public class ServicioVentanaFlotanteMensajes extends Service {
@Override
public IBinder onBind(Intent intent) {
return null;
}
public void onCreate() {
super.onCreate();
// Indica que mostrará el Layout ventana_flotante_mensajes
final LayoutInflater inflater = (LayoutInflater) getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE);
customView = inflater.inflate(R.layout.ventana_flotante_mensajes, null);
// Inicializa el Windows Manager y muestra el Layout
wm = (WindowManager) getSystemService(WINDOW_SERVICE);
final WindowManager.LayoutParams parameters = new WindowManager.LayoutParams(
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_FULLSCREEN,
PixelFormat.TRANSLUCENT);
wm.addView(customView, parameters);
...
}
}
Tengo encontrar una manera de mostrar el icono sobre las otras aplicaciones, se agregó differentes Disposición params para cada uno:
Para la pantalla que desea muestra en la parte superior:
LayoutParams.type = WindowManager.LayoutParams.TYPE_PRIORITY_PHONE;