Mensaje de Android "Screen Overlay Detected" si el usuario está intentando otorgar un permiso cuando se muestra una notificación

80

Tengo Android Marshmallow en un Nexus 6. Estoy intentando solucionar el siguiente problema:

Si un usuario intenta otorgar permiso mientras se muestra una notificación, se muestra un mensaje de "Superposición de pantalla detectada" y el cuadro de diálogo Solicitar permiso desaparece; por supuesto, la aplicación no obtiene el permiso solicitado. (Ver captura de pantalla)

Traté de solucionar el problema agregando el permiso "DIBUJAR OTRAS APLICACIONES" - android.permission.SYSTEM_ALERT_WINDOW al manifiesto pero sin suerte.

PD: Estoy seguro de que el problema es causado por la notificación. No tengo ninguna aplicación instalada que se superponga a otras aplicaciones, incluso desactivé todas las aplicaciones con el permiso "Dibujar sobre otras aplicaciones" en la configuración. No ayudó..

¿Alguien sabe una solución a ese problema?

ingrese la descripción de la imagen aquí

Alexi Akl
fuente
@gsgsgs No tengo ninguna aplicación que se superponga a otras aplicaciones. De todos modos, apagué todas las aplicaciones con el permiso "Dibujar sobre otras aplicaciones" en la configuración. No ayudó. Como mencioné en la pregunta, el problema es causado por la notificación, no por una aplicación.
Alexi Akl
2
En realidad, esto no es algo que deba "arreglar" en el código. Es un error en Android (o en el mejor de los casos, un mensaje de error mal pensado) y, con suerte, Google debería solucionarlo en una versión futura.
Aprenda OpenGL ES
3
Me pasa cuando Facebook Messenger está abierto (en segundo plano)
Tim
1
Esto también sucederá si se ve un brindis.
GLee

Respuestas:

75

En la circunstancia con la que me encontré, yo mismo estaba causando el problema. Fue el resultado de usar un Toastpara mostrar información al usuario al mismo tiempo que pedía permiso. Ambas acciones juntas causan este tipo de error.

Las otras respuestas pueden resolver el problema de otra persona. Pero quería señalar que debe tener cuidado de no causar sus propios errores de superposición. Tenga cuidado de no superponer algo en la vista al mismo tiempo que pide permiso.

Jay Snayder
fuente
4
Enfrenté el mismo problema, quité la tostada y deja de aparecer.
shijin
1
Frente a lo mismo. Se quitó la tostada y funcionó a las mil maravillas
Dennis Anderson
1
Exactamente el mismo problema resuelto con esta solución. Estaba mostrando un mensaje de brindis justo antes de pedir permiso.
Sandoval0992
Esto me resolvió. Estaba usando Toastpara depurar. Esta también puede ser la razón principal por la que la gente tiene esto.
Minoru
Toast to display information to the user at the same time that I was asking for permissionMe ayudó ...
Shailendra Madda
8

Desinstale la aplicación Clean Master. Lo desinstalé y problema resuelto

Hojjat
fuente
2
Intenté esto pero no ayudó. Por el contrario, provocó una desinstalación innecesaria.
user3251882
1
He intentado esto, se hizo ayuda. Causó una desinstalación necesaria. ¡Gracias! (Sony Xperia Z3)
Justin
1
La desinstalación no debería ser una solución. Consulte stackoverflow.com/a/39826828/2724626 para obtener la respuesta correcta.
akshay
En mi caso, no fue Facebook Messengernecesario desinstalarlo, solo forzar la detención.
Hamzeh Soboh
5

Este problema aparece debido a alguna aplicación culpable como Twilight, cleaner-master, drupe, etc.

Para resolver este problema, debe deshabilitar la superposición de pantalla para esas aplicaciones culpables.

tengo moto g4 plus, y así es como resuelvo este problema

Vaya a Configuración -> Seleccionar aplicaciones ---> nuevamente seleccione el icono de configuración en Aplicaciones ---> seleccione dibujar sobre otras aplicaciones ---> y deshabilite las aplicaciones culpables que tienen problemas con otras aplicaciones.

Lo que hice fue verificar cada aplicación al deshabilitar este permiso e intentar ejecutar mi aplicación, y encontré una aplicación con esta superposición preocupante para otras aplicaciones, así que al final deshabilité solo esta aplicación.

Capturas de pantalla:

Seleccionar aplicaciones seleccione configurar ajuste

seleccione dibujar sobre otras aplicacionesdeshabilitar las aplicaciones culpables

Sagar Chavada
fuente
MobileGoConnector y Mobile no se muestran en mi móvil
Keshav Gera
¿Qué debo hacer ahora?
Keshav Gera
1
@KeshavGera nunca lo hará ... porque no es una aplicación interna, la instalé externamente. para usted, será una aplicación diferente que cause el problema de superposición ... en mi caso, estas dos aplicaciones causan un problema de superposición.
Sagar Chavada
@KeshavGera debe verificar cada aplicación desactivando el permiso de superposición ..
Sagar Chavada
3

Obtuve información de múltiples respuestas aquí y en otros foros.

Consolidando cómo me deshice del problema:

  1. Vaya a Configuración> Aplicaciones> (su aplicación que tiene problemas)
  2. Presione el botón de encendido hasta la ventana para apagar, reiniciar, aparece el modo avión
  3. Mantenga la opción de apagado
  4. Seleccione reiniciar en modo seguro
  5. Vaya a configuración> aplicaciones> (su aplicación que tiene problemas)
  6. Seleccione los permisos que desee
  7. Después de la actualización de Android M, pueden surgir problemas en aplicaciones como Messenger, Whatsapp, Prisma, etc.

Avísame si hay algún problema.

Nota: Tengo One plus One mobile.

user3251882
fuente
1
Pero nosotros, como desarrolladores, queremos que la solución se resuelva mediante la codificación, no a través de su enfoque this (Reiniciar en modo seguro).
Rakesh Yadav
Tienes razón Rakesh, esta no es la solución ideal. Pero hasta la fecha no tengo ninguna otra solución que funcione para mi móvil.
user3251882
¡Me funcionó a partir de ahora! Esperemos que Google lo solucione en las versiones de Nougat +.
Surendra Kumar
1

Acabo de eliminar mi aplicación y apagar mi Nexus 6P. Después de volver a encenderla, reinstalé la aplicación y ya no obtuve los cuadros de diálogo de "superposición de pantalla" al otorgar permisos a la aplicación.

Estudiante universitario
fuente
1
Esto está más cerca de un comentario que de una respuesta. Podría ampliar un poco por qué funciona esto. Cómo responder
AgataB
1
@AgataB Soy nuevo en StackOverflow. No tenía derechos para comentar en ese momento y no sabía por qué apagar el teléfono y desinstalar la aplicación funcionaba, solo pensé que podría ayudar.
Estudiante universitario
1

Esta ventana emergente es causada por el permiso manifest.PERMISSION.SYSTEM_ALERT_WINDOW declarado por el manifiesto.

Hay 3 categorías de permisos que el desarrollador debe conocer:

Permiso normal: no haga nada con ellos, simplemente declare en el Manifiesto

Permisos vulnerables : declare en Manifest y solicite permiso la primera vez. Se pueden cambiar a través de la configuración del sistema.

Por encima de los permisos peligrosos: SYSTEM_ALERT_WINDOW y WRITE_SETTINGS pertenecen a esta categoría. Deben concederse, pero no están visibles en la configuración del sistema. Para solicitarlo, no usa una forma estándar (int checkSelfPermission (permiso de cadena)) pero debe verificar Settings.canDrawOverlays () o Settings.System.canWrite () adecuadamente y si no lo hace obtendrá una excepción como

No se puede agregar la ventana android.view.ViewRootImpl$W@1de28ad - permiso denegado para este tipo de ventana

1-Solicite este permiso usted mismo en su código como se indica a continuación:

public class MainActivity extends AppCompatActivity {

public final static int REQUEST_CODE = 10000;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    if (checkDrawOverlayPermission()) {
          Toast.makeText(this, "Permission granted", Toast.LENGTH_SHORT).show();
    }
}

public boolean checkDrawOverlayPermission() {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
        return true;
    }
    if (!Settings.canDrawOverlays(this)) {
        Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
            Uri.parse("package:" + getPackageName()));
        startActivityForResult(intent, REQUEST_CODE);
        return false;
    } else {
        return true;
    }
}

@Override
@TargetApi(Build.VERSION_CODES.M)
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_CODE) {
        if (Settings.canDrawOverlays(this)) {
              Toast.makeText(this, "Permission granted", Toast.LENGTH_SHORT).show();
        }
    }
}
Ghulam Qadir
fuente
0

Debe deshabilitar la superposición para todas las aplicaciones que ve en la lista. Solo de esta manera puede modificar las autorizaciones en la aplicación que necesita. Lo hice en modo seguro y funcionó. Al final, reinicié el teléfono y ahora funciona bien.

elrumeromayor
fuente
0

Actualicé mi Sony Xperia Z3 (Dual Sim) a Android 6.0.1 (Marsmallow). He tenido problemas de superposición de pantalla. Para mí no tengo Clean Master, Du Speed ​​o Du Booster (como las soluciones que he leído).

Así que resolví el mío buscando aplicaciones de superposición de pantalla.

Una aplicación de superposición de pantalla es una aplicación que puede utilizar para acceder a otras aplicaciones en su pantalla de inicio principal sin salir de su pantalla de inicio. Entonces, para mí, la aplicación de superposición de pantalla aquí en mi situación fue OMNI SWIPE . Entonces, si enfrenta este problema, debe calmarse y verificar cuál de su aplicación se ajusta a la definición de una aplicación de superposición de pantalla.

localice la aplicación y desinstálela, luego reinicie su teléfono ..

Acabo de terminar de hacer esto y me lo estoy pasando bien con el teléfono.

La mejor de las suertes

Habdulwahab
fuente
0

Siempre que Android 6.x tenga errores en algunos dispositivos donde esta "alerta de superposición" se muestra sin ningún motivo (en 2 a 5% de los dispositivos según mis datos analíticos), la mejor solución es evitar todo el proceso de permisos definiendo el targetSdk a 22.

Tenga cuidado de no poder degradar el sdk de destino para una nueva versión o esto inducirá un error INSTALL_FAILED_PERMISSION_DOWNGRADE cuando el usuario actualice y requiera unisntall / install de la aplicación.

Regis_AG
fuente
0

la solución es

eliminar los mensajes de Toast del método onRequestPermissionsResult

Sai Gopi Me
fuente
0

Esto sucede cuando ha otorgado permiso de superposición a aplicaciones maliciosas. Vaya a la configuración de superposición y desactive la función de superposición en todas las aplicaciones que no pertenecen a Google y estará listo para comenzar.

Gordon Android Javalist
fuente
-1

Tengo este problema al instalar una nueva aplicación. La forma en que solucioné este problema es habilitar manualmente los permisos para la aplicación recién instalada (antes de ejecutar la aplicación). Estoy bastante seguro de que esto es un problema con los dispositivos Android y Samsung en particular. Espero que esto ayude

usuario2288580
fuente
-4
  1. Elimine las aplicaciones que tienen superposición de pantalla como seguridad CM, Clean Master, etc.

  2. Incluso elimine y pruebe con Messenger (aplicación FB) si es necesario.

Omkar Nibandhe
fuente
Intenté esto pero no ayudó. Por el contrario, provocó una desinstalación innecesaria.
user3251882
A veces hay una razón por la que se instaló una aplicación en primer lugar.
Alen Siljak
No. Simplemente reinstale la aplicación Clean Master y / o la aplicación de mensajería de Facebook. Esto resolvió mi problema.
Omkar Nibandhe