Android-Meldung "Bildschirmüberlagerung erkannt", wenn der Benutzer versucht, eine Berechtigung zu erteilen, wenn eine Benachrichtigung angezeigt wird

80

Ich habe Android Marshmallow auf einem Nexus 6. Ich versuche das folgende Problem zu beheben:

Wenn ein Benutzer versucht, eine Berechtigung zu erteilen, während eine Benachrichtigung angezeigt wird, wird die Meldung "Bildschirmüberlagerung erkannt" angezeigt und das Dialogfeld "Berechtigung anfordern" wird ausgeblendet. Natürlich erhält die App nicht die angeforderte Berechtigung. (Screenshot überprüfen)

Ich habe versucht, das Problem zu beheben, indem ich dem Manifest die Berechtigung "ÜBER ANDERE APPS ZEICHNEN" hinzugefügt habe - android.permission.SYSTEM_ALERT_WINDOW, aber ohne Glück.

PS: Ich bin sicher, dass das Problem durch die Benachrichtigung verursacht wird. Ich habe keine App installiert, die sich über andere Apps legt. Ich habe sogar alle Apps mit der Berechtigung "Über andere Apps zeichnen" in den Einstellungen deaktiviert. Hat nicht geholfen..

Kennt jemand eine Lösung für dieses Problem?

Geben Sie hier die Bildbeschreibung ein

Alexi Akl
quelle
@gsgsgs Ich habe keine App, die andere Apps überlagert. Auf jeden Fall habe ich alle Apps mit der Berechtigung "Über andere Apps zeichnen" in den Einstellungen deaktiviert. Hat nicht geholfen. Wie ich in der Frage erwähnt habe, wird das Problem durch die Benachrichtigung verursacht, nicht durch eine App.
Alexi Akl
2
Dies ist nicht wirklich etwas, das Sie im Code "reparieren" müssen. Es ist ein Fehler in Android (oder bestenfalls eine schlecht durchdachte Fehlermeldung) und Google sollte ihn hoffentlich in einer zukünftigen Version beheben.
Lernen Sie OpenGL ES
3
Passiert mir, wenn Facebook Messenger geöffnet ist (im Hintergrund)
Tim
1
Dies geschieht auch, wenn ein Toast angezeigt wird.
GLee

Antworten:

75

Unter den Umständen, auf die ich gestoßen bin, habe ich das Problem selbst verursacht. Es war das Ergebnis der Verwendung von a Toast, um dem Benutzer Informationen anzuzeigen, während ich um Erlaubnis bat. Beide Aktionen zusammen verursachen diese Art von Fehler.

Die anderen Antworten könnten das Problem eines anderen lösen. Ich wollte jedoch darauf hinweisen, dass Sie vorsichtig sein sollten, wenn Sie Ihre eigenen Überlagerungsfehler verursachen. Achten Sie darauf, dass Sie etwas in der Ansicht nicht überlagern, während Sie gleichzeitig um Erlaubnis bitten.

Jay Snayder
quelle
4
Ich hatte das gleiche Problem, ich entfernte den Toast und er erscheint nicht mehr.
Shijin
1
Konfrontiert das gleiche. Toast entfernt und wie ein Zauber gearbeitet
Dennis Anderson
1
Das exakt gleiche Problem wurde mit dieser Lösung gelöst. Ich zeigte eine Toastnachricht, kurz bevor ich um Erlaubnis bat.
Sandoval0992
Das hat sich für mich gelöst. Wurde Toastzum Debuggen verwendet. Dies kann auch der Hauptgrund sein, warum Menschen dies haben.
Minoru
Toast to display information to the user at the same time that I was asking for permissionHat mir geholfen ..
Shailendra Madda
8

Deinstallieren Sie die Clean Master App. Ich habe es deinstalliert und das Problem gelöst

Hojjat
quelle
2
Ich habe es versucht, aber nicht geholfen. Im Gegenteil, es verursachte unnötige Deinstallationen.
user3251882
1
Ich habe es versucht, es hat geholfen. Es verursachte eine notwendige Deinstallation. Vielen Dank! (Sony Xperia Z3)
Justin
1
Die Deinstallation sollte keine Lösung sein. Bitte überprüfen Sie stackoverflow.com/a/39826828/2724626 für die richtige Antwort.
Akshay
In meinem Fall war es Facebook Messengerkeine Notwendigkeit zu deinstallieren, nur erzwingen Stopp.
Hamzeh Soboh
5

Dieses Problem tritt aufgrund einer schuldigen Anwendung wie Twilight, Cleaner-Master, Steinfrucht usw. auf.

Um dieses Problem zu lösen, müssen Sie die Bildschirmüberlagerung für diese Täter-Apps deaktivieren.

Ich habe Moto G4 Plus, und so löse ich dieses Problem

Gehen Sie zu Einstellung -> Apps auswählen ---> wählen Sie erneut das Einstellungssymbol in Apps ---> wählen Sie Zeichnen über andere Apps ---> und deaktivieren Sie schuldige Apps, die Probleme mit anderen Apps haben.

Was ich getan habe, ist, jede App zu überprüfen, indem ich diese Berechtigung deaktiviere und versuche, meine App auszuführen. Ich habe eine App gefunden, die dieses störende Overlay für andere Apps darstellt. Am Ende habe ich nur diese App deaktiviert.

Screenshots:

Wählen Sie Apps Wählen Sie Konfiguration konfigurieren

Wählen Sie Zeichnen über andere AppsDeaktivieren Sie Täter-Apps

Sagar Chavada
quelle
MobileGoConnector und Mobile werden in meinem Handy nicht angezeigt
Keshav Gera
Was soll ich jetzt tun
Keshav Gera
1
@ KeshavGera es wird nie .. bcz seine nicht interne Anwendung, ich habe es extern installiert. Für Sie wird es eine andere App sein, die ein Overlay-Problem verursacht. In meinem Fall verursachen diese beiden Anwendungen ein Overlay-Problem.
Sagar Chavada
@ KeshavGera Sie sollten jede App überprüfen, indem Sie die Overlay-Berechtigung deaktivieren.
Sagar Chavada
3

Ich habe Einblicke aus mehreren Antworten hier und anderen Foren erhalten.

Konsolidieren, wie ich das Problem beseitigt habe:

  1. Gehen Sie zu Einstellungen> Apps> (Ihre App, bei der ein Problem auftritt)
  2. Drücken Sie die Ein- / Aus-Taste, bis das Fenster für Ausschalten, Neustart und Flugzeugmodus geöffnet wird
  3. Halten Sie die Option Ausschalten gedrückt
  4. Wählen Sie im abgesicherten Modus Neustart
  5. Gehen Sie zu Einstellungen> Apps> (Ihre App, bei der ein Problem auftritt)
  6. Wählen Sie die gewünschten Berechtigungen aus
  7. Nach dem Android M-Update können Probleme in Apps wie Messenger, WhatsApp, Prisma usw. auftreten.

Lassen Sie mich wissen, wenn irgendwelche Probleme.

Hinweis: Ich habe One plus One-Handy.

user3251882
quelle
1
Wir als Entwickler möchten jedoch, dass die Lösung durch Codierung gelöst wird, nicht durch diesen Ansatz (Neustart im abgesicherten Modus).
Rakesh Yadav
Sie haben Recht, Rakesh, dies ist nicht die ideale Lösung. Aber bis jetzt habe ich keine andere Lösung, die für mein Handy funktioniert.
user3251882
Arbeitete ab sofort für mich !! Hoffen wir, dass Google das Problem in Nougat + -Versionen behebt.
Surendra Kumar
1

Ich habe gerade meine App gelöscht und mein Nexus 6P ausgeschaltet. Nach dem erneuten Einschalten habe ich die App neu installiert und beim Erteilen der App-Berechtigungen nicht mehr die Dialogfelder "Bildschirmüberlagerung" angezeigt.

Student
quelle
1
Dies ist näher an einem Kommentar als an einer Antwort. Sie könnten etwas erweitern, warum dies funktioniert. Wie zu
antworten
1
@ AgataB Ich bin neu bei StackOverflow. Ich hatte zu diesem Zeitpunkt keine Rechte zum Kommentieren und wusste nicht, warum das Ausschalten des Telefons und das Deinstallieren der App funktioniert. Ich dachte nur, es könnte helfen.
Student
1

Dieses Popup wird durch die vom Manifest deklarierte Berechtigung manifest.PERMISSION.SYSTEM_ALERT_WINDOW verursacht.

Es gibt drei Kategorien von Berechtigungen, die Entwickler beachten müssen:

Normale Erlaubnis - nichts mit ihnen machen, nur im Manifest deklarieren

Anfällige Berechtigungen - im Manifest deklarieren und beim ersten Mal um Erlaubnis bitten. Sie können über die Systemeinstellungen geändert werden.

Über gefährlichen Berechtigungen: SYSTEM_ALERT_WINDOW und WRITE_SETTINGS gehören zu dieser Kategorie. Sie müssen gewährt werden, sind jedoch in den Systemeinstellungen nicht sichtbar. Um dies anzufordern, verwenden Sie keine Standardmethode (int checkSelfPermission (String-Berechtigung)), sondern müssen Settings.canDrawOverlays () oder Settings.System.canWrite () entsprechend überprüfen. Wenn Sie dies nicht tun, erhalten Sie eine Ausnahme wie

Fenster android.view.ViewRootImpl$W@1de28ad kann nicht hinzugefügt werden - Berechtigung für diesen Fenstertyp verweigert

1-Fordern Sie diese Erlaubnis in Ihrem Code wie unten angegeben an:

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
quelle
0

Sie müssen das Overlay für alle Apps deaktivieren, die in der Liste angezeigt werden. Nur so können Sie Berechtigungen in der benötigten App ändern. Ich habe das im abgesicherten Modus gemacht und es hat funktioniert. Am Ende habe ich das Telefon neu gestartet und jetzt funktioniert es einwandfrei.

elrumeromayor
quelle
0

Ich habe mein Sony Xperia Z3 (Dual Sim) auf Android 6.0.1 (Marsmallow) aktualisiert. Ich hatte Probleme mit der Bildschirmüberlagerung. Für mich habe ich keinen Clean Master, Du Speed ​​oder Du Booster (wie die Lösungen, die ich gelesen habe).

Also löste ich meine Suche nach Bildschirm-Overlay-Apps.

Eine Bildschirmüberlappungs-App ist eine App, mit der Sie auf andere Apps auf Ihrem Hauptstartbildschirm zugreifen können, ohne den Startbildschirm zu verlassen. Für mich war die Screen Overlay App hier in meiner Situation die OMNI SWIPE . Wenn Sie also mit diesem Problem konfrontiert sind, müssen Sie sich beruhigen und prüfen, welche Ihrer Apps zur Definition einer Bildschirmüberlagerungs-App passt.

Suchen Sie die App und deinstallieren Sie sie. Starten Sie dann Ihr Telefon neu.

Ich habe gerade damit fertig und habe eine gute Zeit mit dem Telefon

Viel Glück

Habdulwahab
quelle
0

Solange Android 6.x auf einigen Geräten fehlerhaft ist, auf denen diese "Overlay-Warnung" ohne Grund angezeigt wird (auf 2 bis 5% der Geräte gemäß meinen Analysedaten), besteht die beste Lösung darin, den gesamten Berechtigungsprozess durch zu vermeiden Definieren des targetSdk bis 22.

Achten Sie darauf, dass Sie das Ziel-SDK nicht für eine neue Version herunterstufen können. Andernfalls wird ein INSTALL_FAILED_PERMISSION_DOWNGRADE-Fehler ausgelöst, wenn der Benutzer Updates aktualisiert, die eine Deinstallation / Installation der App erfordern.

Regis_AG
quelle
0

Lösung ist

Entfernen Sie Toast- Nachrichten aus der onRequestPermissionsResult- Methode

Sai Gopi ich
quelle
0

Dies geschieht, wenn Sie bösartigen Apps die Überlagerungsberechtigung erteilt haben. Gehen Sie zu den Overlay-Einstellungen und deaktivieren Sie die Overlay-Funktion für alle Apps, die nicht zu Google gehören.

Gordon Android Javalist
quelle
-1

Ich habe dieses Problem bei der Installation einer neuen App. Ich habe dieses Problem umgangen, indem ich die Berechtigungen für die neu installierte App manuell aktiviert habe (bevor die App ausgeführt wird). Ich bin mir ziemlich sicher, dass dies insbesondere bei Android- und Samsung-Geräten ein Problem ist. Hoffe das hilft

user2288580
quelle
-4
  1. Löschen Sie Apps mit Bildschirmüberlagerung wie CM-Sicherheit, Clean Master usw.

  2. Bei Bedarf sogar löschen und mit Messenger (FB-App) versuchen.

Omkar Nibandhe
quelle
Ich habe es versucht, aber nicht geholfen. Im Gegenteil, es verursachte unnötige Deinstallationen.
user3251882
Manchmal gibt es einen Grund, warum eine App überhaupt installiert wurde.
Alen Siljak
Nein. Installieren Sie einfach die Clean Master App und / oder die Facebook Messenger App neu. Dies löste das Problem für mich.
Omkar Nibandhe