2017-09-13 9 views
3

Manifest:Settings.canDrawOverlays (Kontext) gibt false zurück auf Android Oreo

<uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW" /> 
<uses-permission android:name="android.permission.ACTION_MANAGE_OVERLAY_PERMISSION" /> 

-Code activity.onCreate():

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && BuildConfig.DEBUG) { 
     if (!Settings.canDrawOverlays(this)) { 
      Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, 
        Uri.parse("package:" + getPackageName())); 
      startActivityForResult(intent, OVERLAY_PERMISSION_REQ_CODE); 
     } 
    } 

Problem: Settings.canDrawOverlays (diese) auch false zurück also wurde die Erlaubnis bereits erteilt. Es ist noch nicht passiert, Update Pixel zu Oreo.

Android-Version: 8.0.0

Ich habe versucht, Build-Tools zu aktualisieren: bis 26.0.1 und Ziel und compileSdk bis 26. Es ist auf dem ersten Start geholfen: nach Makeln auf es gibt true zurück, aber Wenn ich das nächste Mal die Anwendung starte, gibt es wieder false zurück.

+0

Ich habe dieses Problem auch - bitte lassen Sie mich wissen, wenn Sie eine Lösung finden – Eshaan

+1

Siehe meine Lösung für das Problem unter https://stackoverflow.com/questions/46173460/why-in-android-o-method- Einstellungen-candrawoverlays-returns-false-wenn-Benutzer-hat/48127195 # 48127195 – headuck

Antwort

0

Also ich habe dieses Problem festgestellt und meine beste Vermutung ist, dass jetzt in Android O die Einstellung für canDrawOverlays asynchron geschrieben wird. Ich habe eine Aktivität, die diesen Bildschirm für den Benutzer startet, und wenn ich zurückkomme, sehe ich, dass diese Methode false zurückgibt, unabhängig davon, ob der Benutzer sie ein- oder ausgeschaltet hat. Aber wenn ich die Einstellung einschalte und dann einige Zeit warte und zurück gehe, scheint es richtig zu reflektieren. Ich bin mir nicht sicher, was Google damit zu erreichen versucht, aber es macht Kodierung um in der Lage zu wissen, ob die Einstellung aktiviert wurde oder nicht sehr schwierig ..

Hinweis: Wenn Sie Ihre eigene Aktivität pausieren starten Einstellungsaktivität, dann wird die Überlagerungsberechtigung beibehalten und gibt True zurück, wenn sie aktiviert ist. Dies ist etwas, das Sie zum Erstellen Ihrer Workaround-UX verwenden können.

1

Das Problem war in Android Oreo selbst.

Nachdem ich Sicherheits-Patch installiert habe, verschwand es.

Lösung: Installieren Sie den neuesten Sicherheitspatch.