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?
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.
Deinstallieren Sie die Clean Master App. Ich habe es deinstalliert und das Problem gelöst
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:
Erkenntnisse aus mehreren Antworten hier und in anderen Foren.
Konsolidieren, wie ich das Problem losgeworden bin:
Lassen Sie mich wissen, wenn Probleme auftreten.
Hinweis: Ich besitze ein One plus One-Mobiltelefon.
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.
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.
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
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();
}
}
}
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.
lösung ist
entfernen Sie Toast Nachrichten von onRequestPermissionsResult Methode