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?
quelle
Antworten:
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.
quelle
Toast
zum Debuggen verwendet. Dies kann auch der Hauptgrund sein, warum Menschen dies haben.Toast to display information to the user at the same time that I was asking for permission
Hat mir geholfen ..Deinstallieren Sie die Clean Master App. Ich habe es deinstalliert und das Problem gelöst
quelle
Facebook Messenger
keine Notwendigkeit zu deinstallieren, nur erzwingen Stopp.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:
quelle
Ich habe Einblicke aus mehreren Antworten hier und anderen Foren erhalten.
Konsolidieren, wie ich das Problem beseitigt habe:
Lassen Sie mich wissen, wenn irgendwelche Probleme.
Hinweis: Ich habe One plus One-Handy.
quelle
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.
quelle
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
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(); } } }
quelle
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.
quelle
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
quelle
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.
quelle
Lösung ist
Entfernen Sie Toast- Nachrichten aus der onRequestPermissionsResult- Methode
quelle
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.
quelle
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
quelle
Löschen Sie Apps mit Bildschirmüberlagerung wie CM-Sicherheit, Clean Master usw.
Bei Bedarf sogar löschen und mit Messenger (FB-App) versuchen.
quelle