web-dev-qa-db-fra.com

Android Message "Incrustation d'écran détecté" si l'utilisateur tente d'accorder une autorisation lorsqu'une notification s'affiche

J'ai Android Marshmallow sur un Nexus 6. J'essaie de résoudre le problème suivant:

Si un utilisateur tente d'accorder une autorisation alors qu'une notification est affichée, un message "Incrustation d'écran détectée" s'affiche et la boîte de dialogue Demande d'autorisation disparaît. Bien entendu, l'application ne reçoit pas l'autorisation demandée. (Vérifiez la capture d'écran)

J'ai essayé de résoudre le problème en ajoutant l'autorisation "DRAW OVER OTHER APPS" - Android.permission.SYSTEM_ALERT_WINDOW au manifeste, mais sans succès.

PS: Je suis sûr que le problème est causé par la notification. Aucune application installée ne se superposant à d'autres applications, j'ai même désactivé toutes les applications dotées de l'autorisation "Dessiner sur d'autres applications" dans les paramètres. N'a pas aidé..

Quelqu'un connaît une solution à ce problème?

enter image description here

79
Alexi Akl

Dans les circonstances que j'ai rencontrées, je causais le problème moi-même. C'était le résultat de l'utilisation d'un Toast pour afficher des informations à l'utilisateur en même temps que je demandais une permission. Ces deux actions ensemble provoquent ce type d'erreur.

Les autres réponses pourraient résoudre le problème de quelqu'un d'autre. Mais je voulais noter que vous devriez être prudent de causer vos propres erreurs de superposition. Veillez à ne pas superposer quelque chose dans la vue tout en demandant simultanément la permission.

74
Jay Snayder

Désinstallez l'application Clean Master. Je l'ai désinstallé et le problème résolu

8
Hojjat

Ce problème apparaît à cause d'une application coupable comme Twilight, cleaner-master, drupe, etc.

Pour résoudre ce problème, vous devez désactiver la superposition d'écran pour les applications concernées.

j'ai moto G4 plus, et voici comment je résous ce problème

Allez dans Paramètres -> Sélectionner les applications ---> sélectionnez à nouveau l'icône de réglage dans Applications ---> sélectionnez Dessiner par-dessus d'autres applications ---> et désactivez les applications coupables qui rencontrent des difficultés pour d'autres applications.

ce que j’ai fait est de vérifier chaque application en désactivant cette permission et d’essayer d’exécuter mon application; j’ai trouvé une application cette superposition inquiétante pour d’autres applications, donc à la fin j’ai désactivé cette application uniquement.

Captures d'écran:

Select Appsselect configure setting

select draw over other appsdisable culprit apps

5
Sagar Chavada

Vous avez des idées de plusieurs réponses ici et d'autres forums.

Consolider comment je me suis débarrassé du problème:

  1. Accédez à Paramètres> Applications> (votre application pose problème).
  2. Appuyez sur le bouton d'alimentation jusqu'à ce que la fenêtre s'éteigne pour éteindre, redémarrer, le mode avion s'affiche
  3. Hold on Option de mise hors tension
  4. Sélectionnez redémarrer en mode sans échec
  5. Accédez aux paramètres> applications> (votre application pose problème).
  6. Sélectionnez les autorisations que vous souhaitez
  7. Après la mise à jour Android M, des problèmes peuvent survenir dans des applications telles que Messenger, Whatsapp, Prisma, etc.

Faites-moi savoir si des problèmes.

Remarque: je reçois un mobile plus un.

3
user3251882

Je viens de supprimer mon application et d'éteindre mon Nexus 6P. Après l'avoir réactivée, j'ai réinstallé l'application et je n'ai plus reçu les boîtes de dialogue "superposition d'écran" lors de l'octroi des autorisations de l'application.

1
College Student

Tant que Android 6.x est bogué sur certains appareils, où cette "alerte de superposition" est affichée sans aucune raison (sur 2 à 5% des appareils selon mes données d'analyse), la meilleure solution consiste à éviter tout le processus d'autorisation en définissant le targetSdk à 22.

Assurez-vous que vous ne pouvez pas rétrograder le sdk cible pour une nouvelle version, sinon une erreur INSTALL_FAILED_PERMISSION_DOWNGRADE s'ensuivra lorsque l'utilisateur effectuera une mise à jour nécessitant une installation/un unisall de l'application.

0
Regis_AG

Cela se produit lorsque vous avez accordé l’autorisation de superposition à des applications malveillantes. Accédez aux paramètres de superposition et désactivez la fonctionnalité de superposition sur toutes les applications qui n'appartiennent pas à Google. Vous pourrez continuer.

0

J'ai mis à jour mon Sony Xperia Z3 (Dual Sim) à Android 6.0.1 (Marsmallow). J'ai eu des problèmes de superposition d'écran. Pour moi, je n'ai pas Clean Master, Du Speed ​​ou Du Booster (comme les solutions que j'ai lues).

J'ai donc résolu le mien à la recherche de toutes les applications de superposition d'écran.

Une application de chevauchement d'écran est une application que vous pouvez utiliser pour accéder à d'autres applications sur votre écran d'accueil principal sans quitter votre écran d'accueil. Donc, pour moi, l'application de superposition d'écran ici, dans ma situation, était la OMNI SWIPE. Donc, si vous rencontrez ce problème, vous devez vous calmer et vérifier laquelle de votre application correspond à la définition d'une application de superposition d'écran.

localisez l'application et désinstallez puis redémarrez votre téléphone ..

je viens de finir de faire cela et je passe un bon moment avec le téléphone

Bonne chance

0
Habdulwahab

Cette fenêtre contextuelle est générée par l’autorisation manifest.PERMISSION.SYSTEM_ALERT_WINDOW déclarée par le manifeste.

Il y a 3 catégories d'autorisations, que le développeur doit connaître:

Autorisation normale - ne faites rien avec eux, déclarez simplement dans le manifeste

Autorisations vulnérables - Déclarez dans Manifest et demandez une autorisation dès la première fois. Ils peuvent être modifiés via les paramètres du système.

Autorisations dangereuses précédentes: SYSTEM_ALERT_WINDOW et WRITE_SETTINGS appartiennent à cette catégorie. Ils doivent être accordés mais ne sont pas visibles dans les paramètres système. Pour le demander, vous n'utilisez pas de méthode standard (int checkSelfPermission (permission de chaîne)) mais vous devez vérifier Settings.canDrawOverlays () () ou Settings.System.canWrite () correctement et si vous ne le faites pas, vous obtiendrez une exception comme

Impossible d'ajouter la fenêtre Android.view.ViewRootImpl$W@1de28ad - autorisation refusée pour ce type de fenêtre

1-Demandez cette permission par vous-même dans votre code, comme indiqué ci-dessous:

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();
        }
    }
}
0
Ghulam Qadir

Vous devez désactiver la superposition pour toutes les applications que vous voyez dans la liste. De cette façon, vous pourrez modifier les autorisations dans l'application dont vous avez besoin. Je l'ai fait en mode sans échec, et cela a fonctionné. À la fin, j'ai redémarré le téléphone et maintenant, il fonctionne bien.

0
elrumeromayor

la solution est

remove Toast messages de onRequestPermissionsResult méthode

0
saigopi