¿Hay alguna manera de determinar qué aplicación se basa en otras aplicaciones?
Por ejemplo, la aplicación Facebook Messenger puede dibujar las burbujas de chat sobre todo, pero ¿cómo sé qué aplicación está haciendo esto?
Mi problema:
Tengo una aplicación que dibuja anuncios encima de todo y quiero saber qué aplicación está haciendo esto. No solo para desinstalarlo, sino para advertir a todos los que usan esta aplicación. (No instalé ninguna aplicación recientemente y ya verifiqué las actualizaciones recientes).
Intenté usar la Jerarquía de vista de volcado para UI Automator de Android Studio, pero parece que las aplicaciones que dibujan en la parte superior no se pueden seleccionar de esta manera.
(Haga clic en la imagen para ampliarla)
applications
overlay
andreroggeri
fuente
fuente
Respuestas:
Nota:
Editar: corte la persecución en la solución anterior y siga solo esta sección editada.
Configura adb y ejecuta este comando:
Obtendrá la salida de todas las superposiciones activas en la pantalla. Ejemplo de una salida con DU Screen Recorder, Tasker y AZ Screen Recorder mostrando superposiciones activas en pantalla:
El texto resaltado junto a package = y antes de appop es el nombre (s) del paquete de las aplicaciones que actualmente se superponen en la pantalla. En su caso, la salida que incluye los nombres del paquete sería diferente.
Anote los nombres del paquete (en adelante PKG) y ejecute este comando:
Reemplace PKG con el nombre del paquete que anotó. Si tenía varios nombres de paquetes, repita el comando con un nombre de paquete a la vez.
El comando detendría forzosamente la aplicación y, por lo tanto, descartaría la superposición. Esto debería funcionar. Alternativamente, puede quitar el permiso de "Dibujar sobre otras aplicaciones" (superposición de pantalla en resumen) de las aplicaciones usando este comando:
Nuevamente, reemplace PKG con el nombre del paquete según sea necesario. Además, es posible que deba repetir el comando force-stop para el PKG. Si decide revertir los cambios, reemplace ignorar con permitir en el comando mencionado anteriormente.
Alternativamente, puede usar App Ops para administrar los permisos de la GUI.
Para saber qué nombre de paquete corresponde a qué aplicación puede probar una aplicación de código abierto como Información de aplicaciones . Busque por nombre de paquete y obtendrá el nombre de la aplicación.
Editar terminado
Realmente no necesitas leer más ahora . Dejo intacta la solución anterior (es decir, la siguiente sección) porque 21 personas que la votaron encontraron útil y no quiero volver a equivocarme.
Una manera simple sería encontrar todas las aplicaciones que tienen el permiso "dibujar sobre otras aplicaciones" y luego seleccionarlas de las que están actualmente activas en la pantalla. Luego, realice la detención forzada de esas aplicaciones comunes hasta que identifique la aplicación responsable de la superposición activa.
Enumerar las aplicaciones que tienen permiso para superponer
El permiso requerido por una aplicación para crear una superposición es
android.permission.SYSTEM_ALERT_WINDOW
(dibujar sobre otras aplicaciones).Necesitamos encontrar todas las aplicaciones instaladas que tienen dicho permiso. Depende de usted encontrar un método para esto. Mi respuesta aquí puede ayudarte.
Tenga en cuenta que necesitamos los nombres de los paquetes de las aplicaciones y no sus etiquetas.
Recoger cerezas de ventanas activas
Ejecutar el comando
Esto le daría detalles sobre cualquier causa que muestre algo en la pantalla, incluido el nombre del componente de una aplicación que lo causa.
La forma de extraer el nombre depende de usted. Sin embargo, puedes probar este comando
Si recibe el error: 'grep' no se reconoce como un comando interno o externo , en Windows pruebe este comando alternativo:
Salida de demostración
En el resultado anterior, todo lo que sucede
u0
y precede/
es el nombre del paquete de una aplicación. Una aplicación puede tener múltiples componentes que muestran algo en la pantalla.Tienes que crear una lista de esos nombres de paquetes. Si tiene instalado BusyBox , puede hacer
De todos modos, ahora tendrías dos listas:
android.permission.SYSTEM_ALERT_WINDOW
.Compare estas dos listas y aplicaciones individuales que son comunes en ambas listas. Esta tercera lista constituiría aplicaciones que tienen permiso para dibujar superposiciones y actualmente están dibujando una superposición activa en la pantalla.
Hora de matar
Elimine cada una de las aplicaciones de la tercera lista una por una y observe el estado de la superposición. Puede usar
am force-stop PACKAGE_NAME --user 0
o cualquier otro método que le convenga.PACKAGE_NAME
es el nombre del paquete de la aplicación.EDITAR : no es necesario matar una aplicación. Puede considerar negarle a la aplicación el permiso para dibujar sobre otras aplicaciones. Usa este comando:
Para revertir los cambios, reemplace negar con permitir en dicho comando y ejecútelo.
Si está ejecutando Android Marshmallow, se puede usar esta respuesta de Andrew T.
Nota: El comando mencionado anteriormente se prueba con éxito en Android 5.1.1 y 6.0.1 (compilaciones CM). También es posible que el comando funcione en Android 5.0.x, pero no puedo garantizarlo . La ejecución de ese comando en la versión de Android lanzada antes de Lollipop causaría un error.
Dado que a menudo la superposición es perceptible, desaparecería instantáneamente en el momento en que la aplicación que la causa se elimine, por lo tanto, sabría qué aplicación estaba causando esa superposición.
Aplicaciones para aplicaciones
Originalmente sugerido por Izzy, puede usar una aplicación que tiene la funcionalidad de enumerar permisos otorgados a aplicaciones instaladas, para destacar las aplicaciones que tienen el permiso "dibujar sobre otras aplicaciones". Puede buscar dicha aplicación por su cuenta o utilizar la lista de verificadores de permisos mantenida por Izzy en su sitio web.
También necesitaría un administrador de procesos / aplicaciones para forzar-detener / eliminar algunos procesos. Recomiendo OS Monitor, pero tiene la libertad de usar cualquier aplicación competente. Ver aplicaciones relacionadas en Información del sistema .
Solo con fines de demostración
Intenté Advanced Permission Manager para enumerar aplicaciones con permiso para "dibujar sobre otras aplicaciones". Luego, cambié a OS Monitor para ver las aplicaciones ejecutándose en primer plano y en segundo plano. Emparejé el resultado de ambas aplicaciones e individualmente forcé la detención de las aplicaciones comunes en ambas. Puede eliminar un proceso desde el interior del monitor del sistema operativo, por lo que no es necesario cambiar a la configuración de la aplicación.
(Haga clic en la imagen para ampliarla)
fuente
Si está usando Android 6.0 Marshmallow, puede usar su administrador de permisos nativo.
De un artículo sobre BGR ,
Para enumerar las aplicaciones que pueden dibujar sobre otras aplicaciones, vaya a Configuración - Aplicaciones - Avanzado (menú con icono de engranaje) - Dibuje sobre otras aplicaciones .
También puede habilitar / deshabilitar la función temporalmente tocando la aplicación y alternando "Permitir dibujar sobre otras aplicaciones".
Imagen cortesía de Sebastiano Gottardo en Medium
fuente
Muchas gracias @Firelord! Finalmente encontré la aplicación que me impedía instalar apk y realizar copias de seguridad de adb.
Para mí, encontré que era una aplicación llamada
Battery Mix
Leer para ver qué hice y cómo lo hice.https://play.google.com/store/apps/details?id=jp.smapho.battery_mix
Muchas personas han tenido problemas con la instalación de apk y no han podido presionar 'Instalar'. Todas las respuestas que pude encontrar se debieron principalmente a mostrar aplicaciones de atenuación, tintado y ahorro de energía. Como no utilicé ninguna o eliminé todas las aplicaciones similares, tuve problemas para encontrar qué estaba pasando y qué aplicación era la culpable. ¡Y finalmente! Después de un simple comando y una búsqueda rápida, se ha resuelto: D
La aplicación ofensiva
Battery Mix
es una aplicación de monitoreo de batería simple que tenía la función que solía mostrar una línea delgada en la parte superior de la pantalla para mostrar el estado del nivel de la batería (una pequeña aplicación genial).Entonces, para diagnosticar, utilicé un comando de
Firelord
(arriba) para volcar un archivo de texto y luego buscar la aplicación que estaba causando que el sistema Android me impidiera hacer clic en el botón Instalar.Ejecutar comando desde PC
adb shell dumpsys window windows > dumpsys-windows.txt
Buscar
SYSTEM_ALERT_WINDOW
Para encontrar cualquier aplicación ofensiva, busqué la cadena anterior
Lo que me dio la línea:
mOwnerUid=10129 mShowToOwnerOnly=true package=jp.smapho.battery_mix appop=SYSTEM_ALERT_WINDOW
(Ver carga de imágenes para la sección del archivo de texto)
inmediatamente pude reconocer a qué aplicación se refería: jp.smapho. batería_mezcla
Así que ahora sé matar esa aplicación cada vez que planeo hacer una carga lateral o realizar copias de seguridad de adb.
fuente
Para Android Marshmallow y Oxygen 3.0.2, Deshabilitar la ventana emergente Diseño de pantalla
Vaya a Aplicaciones y configúrelas y seleccione Dibujar sobre otras aplicaciones.
Vaya y seleccione la aplicación para deshabilitarla para que la aplicación se desbloquee de la transmisión de diseño de pantalla. y la aplicación puede obtener permisos directamente
Vaya a la aplicación y los permisos respectivos y habilite los permisos que desee.
Disfrutar
Raj
fuente