SYSTEM_ALERT_WINDOW PERMISSION auf API 26 funktioniert nicht wie erwartet. Berechtigung verweigert für Fenstertyp 2002

8

Ich verwende eine Überlagerungsberechtigung, um bestimmte Informationen in meiner App anzuzeigen. Es läuft auf API 23 - 25 und es funktioniert gut (bittet um Erlaubnis, Gewähren, etc. nach

Kann nicht hinzugefügt werden window android.view.ViewRoot$W@44da9bc0 - Berechtigung für diesen Fenstertyp verweigert ). (Vielen Dank an ceph3us!)

Gleiches über API 26 versuchen Ich erhalte einen Fehler, im Prinzip "Berechtigung verweigert für Fenstertyp 2002" beim Aufruf von

%Vor%

Hat Google den Weg geändert, funktioniert Overlay? Irgendeine Idee, wie man meinen Text als Overlay auf den Bildschirm in Android 8 (Oreo), API 26 bekommt? Danke für deine Ideen!

Dies ist das Fehlerprotokoll:

%Vor%

In meinem Manifest habe ich:

%Vor%

Dies ist meine MainActivity:

%Vor%

Und das ist die DrawView:

%Vor%     
tomseitz 24.08.2017, 17:17
quelle

2 Antworten

13

Laut der Dokumentation zu Verhaltensänderungen für Android 8.0 für Apps Targeting auf Android 8.0:

  

Apps, die die Berechtigung SYSTEM_ALERT_WINDOW verwenden, können die folgenden Fenstertypen nicht mehr verwenden, um Warnfenster über anderen Apps und Systemfenstern anzuzeigen:

%Vor%
  

Stattdessen müssen Apps einen neuen Fenstertyp namens TYPE_APPLICATION_OVERLAY verwenden.

Ihre App könnte also auf eine niedrigere Version abzielen. In diesem Fall wird Ihr Benachrichtigungsfenster ...

angezeigt
  

erscheint immer unter den Fenstern, die den TYPE_APPLICATION_OVERLAY-Fenstertyp verwenden. Wenn eine App auf Android 8.0 (API-Stufe 26) abzielt, verwendet die App den TYPE_APPLICATION_OVERLAY-Fenstertyp, um Warnfenster anzuzeigen.

(aus der gleichen Quelle zitiert)

    
0X0nosugar 24.08.2017 17:23
quelle
0

Android Oreo (und zukünftige Versionen) erlauben die Verwendung von WindowManager.LayoutParams.TYPE_PHONE nicht, da es veraltet ist, stattdessen WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY

zu verwenden %Vor%     
quelle