webentwicklung-frage-antwort-db.com.de

Android "Screen Overlay Detected" Meldung, wenn der Benutzer versucht, eine Berechtigung zu erteilen, wenn eine Benachrichtigung angezeigt wird

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. Die App erhält natürlich nicht die angeforderte Berechtigung. (Screenshot überprüfen)

Ich habe versucht, das Problem zu beheben, indem ich die Berechtigung "DRAW OVER OTHER APPS" - Android.permission.SYSTEM_ALERT_WINDOW zum Manifest hinzugefügt habe, aber ohne Erfolg.

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?

enter image description here

79
Alexi Akl

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

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

74
Jay Snayder

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

8
Hojjat

Dieses Problem tritt aufgrund von Täteranwendungen wie Twilight, Cleaner-Master, Drupe usw. auf.

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

ich habe moto g4 plus und so löse ich dieses problem

Gehen Sie zu Einstellungen -> Apps auswählen ---> wählen Sie erneut das Einstellungssymbol in Apps ---> wählen Sie Über andere Apps zeichnen ---> und deaktivieren Sie Schuldigen-Apps, die Probleme mit anderen Apps haben.

ich überprüfe jede App, indem ich diese Berechtigung deaktiviere und versuche, meine App auszuführen. Am Ende habe ich festgestellt, dass eine App dieses problematische Overlay für andere Apps enthält. Daher habe ich nur diese App deaktiviert.

Screenshots:

Select Appsselect configure setting

select draw over other appsdisable culprit apps

5
Sagar Chavada

Erkenntnisse aus mehreren Antworten hier und in anderen Foren.

Konsolidieren, wie ich das Problem losgeworden bin:

  1. Gehen Sie zu Einstellungen> Apps> (Ihre App, bei der ein Problem auftritt).
  2. Drücken Sie den Ein-/Ausschalter, bis das Fenster zum Ausschalten, Neustarten und Aufrufen des Flugzeugmodus angezeigt wird
  3. Gedrückt halten Ausschaltoption
  4. Wählen Sie Neustart im abgesicherten Modus
  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 mit Apps wie Messenger, WhatsApp, Prisma usw. auftreten.

Lassen Sie mich wissen, wenn Probleme auftreten.

Hinweis: Ich besitze ein One plus One-Mobiltelefon.

3
user3251882

Ich habe gerade meine App gelöscht und mein Nexus 6P ausgeschaltet. Nach dem Wiedereinschalten habe ich die App neu installiert und die "Bildschirm-Overlay" -Dialoge nicht mehr erhalten, wenn ich der App Berechtigungen erteile.

1
College Student

Solange Android 6.x auf einigen Geräten fehlerhaft ist, auf denen dieser "Overlay-Alarm" ohne Grund angezeigt wird (auf 2 bis 5% der Geräte laut meinen Analysedaten), ist das am besten Die Lösung besteht darin, den gesamten Berechtigungsprozess zu vermeiden, indem Sie targetSdk auf 22 festlegen.

Stellen Sie sicher, dass Sie das Ziel-SDK nicht für eine neue Version downgraden können. Andernfalls wird der Fehler INSTALL_FAILED_PERMISSION_DOWNGRADE ausgelöst, wenn der Benutzer ein Update durchführt, das eine Deinstallation/Installation der App erfordert.

0
Regis_AG

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

Ich habe mein Sony Xperia Z3 (Dual Sim) auf Android 6.0.1 (Marsmallow) aktualisiert. Ich habe Probleme mit der Bildschirmüberlagerung. Für mich gibt es keine 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.

Bei einer App für Bildschirmüberschneidungen handelt es sich um eine App, mit der Sie auf andere Apps auf Ihrem Hauptstartbildschirm zugreifen können, ohne den Startbildschirm zu verlassen. Also 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 Screen-Overlay-App passt.

suchen Sie die App, deinstallieren Sie sie und starten Sie das Telefon neu.

ich bin gerade fertig damit und habe eine gute Zeit mit dem Telefon

Viel Glück

0
Habdulwahab

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

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

Normale Erlaubnis - mach nichts mit ihnen, erkläre es einfach im Manifest

Vulnerable Permissions - In Manifest deklarieren und beim ersten Mal um Erlaubnis bitten. Sie können über die Systemeinstellungen geändert werden.

Oberhalb gefährlicher Berechtigungen: SYSTEM_ALERT_WINDOW und WRITE_SETTINGS gehören zu dieser Kategorie. Sie müssen gewährt werden, sind aber in den Systemeinstellungen nicht sichtbar. Um es anzufordern, verwenden Sie keine Standardmethode (int checkSelfPermission (String permission)), sondern müssen Settings.canDrawOverlays () oder Settings.System.canWrite () entsprechend und wenn Sie dies nicht tun, erhalten Sie eine Ausnahme wie

Fenster kann nicht hinzugefügt werden [email protected] - Berechtigung für diesen Fenstertyp verweigert

1-Fordern Sie diese Erlaubnis in Ihrem Code wie folgt 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();
        }
    }
}
0
Ghulam Qadir

Sie müssen die Überlagerung für alle Apps deaktivieren, die in der Liste angezeigt werden. Nur so können Sie Berechtigungen in der gewünschten 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.

0
elrumeromayor

lösung ist

entfernen Sie Toast Nachrichten von onRequestPermissionsResult Methode

0
saigopi