SYSTEM_ALERT_WINDOW – Wie bekomme ich diese Berechtigung automatisch auf Android 6.0 und targetSdkVersion 23

Facebook, Evernote, Pocket – alle Apps erhalten diese Berechtigung auf Android 6.0 automatisch, obwohl sie auf 23 ( targetSdkVersion=23 ) zielen.

Es gab eine Menge Dokumentation über das neue Marshmallow-Berechtigungsmodell. Einer von ihnen ist SYSTEM_ALERT_WINDOW "gefördert" zu "über gefährlicher" Erlaubnisklasse, so dass eine spezielle Benutzerintervention erforderlich ist, damit Apps mit diesen vergeben werden können. Wenn die App targetSdkVersion 22 oder niedriger hat, bekommt app diese Berechtigung automatisch (falls im Manifest angefordert).

  • Android Studio: Gradle Produkt-Aromen: Definieren Sie benutzerdefinierte Eigenschaften
  • Ersetzen einer Farbe in einer Bitmap
  • Finite State Machine (FSM) und Android Java
  • Installierte Anwendung ist Drittanbieter oder nicht
  • Wie mache ich eine Fallunempfindliche Abfrage mit ContentResolver in Android?
  • FragmentActivity kann nicht auf einen Typ aufgelöst werden
  • Allerdings habe ich bemerkt, einige apps, die diese Erlaubnis zu bekommen, ohne dass der Benutzer an die Einstellung spezielle Seite von Draw over other apps Genehmigung zu senden. Ich sah Facebook, Evernote, Pocket – und vielleicht gibt es noch mehr.

    Wer weiß, wie eine App diese Erlaubnis erteilt werden kann, ohne dass der Benutzer die Settings -> Apps -> Draw over other apps zieht?

    Vielen Dank

  • Android Studio: Warum sind MinSdkVersion und targetSdkVersion sowohl in AndroidManifest.xml als auch auf build.gradle angegeben?
  • Android-Bibliothek mit spezifischer Produkt-Aromen-Abhängigkeit
  • Gibt es bei Installationsveranstaltung in Android?
  • Gibt es einen Grund, das Observer-Muster über einen Broadcast Receiver zu verwenden?
  • Ist es immer noch so, dass Android niemals Klassen entlädt?
  • Android format edittext, um Leerzeichen nach jeweils 4 Zeichen anzuzeigen
  • 3 Solutions collect form web for “SYSTEM_ALERT_WINDOW – Wie bekomme ich diese Berechtigung automatisch auf Android 6.0 und targetSdkVersion 23”

    Es ist ein neues Verhalten in Marshmallow 6.0.1 eingeführt .

    Jede App, die die SYSTEM_ALERT_WINDOW anfordert und die über den Play Store installiert ist (Version 6.0.5 oder höher), wird die Berechtigung automatisch erteilt.

    Wenn stattdessen die App sideloaded ist, wird die Berechtigung nicht automatisch gewährt. Sie können versuchen, die Evernote APK von apkmirror.com herunterzuladen und zu installieren. Wie Sie sehen können, müssen Sie die Berechtigung manuell unter Settings -> Apps -> Draw over other apps erteilen.

    Dies sind die Commits [1] [2] , die es dem Play Store erlauben, die automatische Erteilung der SYSTEM_ALERT_WINDOW zu geben.

    Yeh Nach Marshmallow kommen Android machen Sicherheitsniveau mehr Stick, aber für

     SYSTEM_ALERT_WINDOW 

    Sie können schwimmende Aktion zeigen und alles, was Sie Benutzer zwingen können, die Erlaubnis dafür zu erteilen Durch die folgenden Codes in Ihrer Oncreate () – Methode Setzen Sie diesen Code nach setContentView

     / // Check if Android M or higher if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){ // Show alert dialog to the user saying a separate permission is needed // Launch the settings activity if the user prefers Intent myIntent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION); startActivity(myIntent); } 

    Die Aktion ACTION_MANAGE_OVERLAY_PERMISSION startet direkt den Berechtigungsbildschirm "Auszug über andere Apps".


    Bearbeiten

    Hallo meine über Code Code 100% korrigieren

    Aber ich habe gerade festgestellt, dass viele Jungs immer noch suchen, wie kann ACTION_MANAGE_OVERLAY_PERMISSION dauerhaft wie Wenn Benutzer erlaubt erlauben erlauben Einmal dann fragen Sie es nicht jedes Mal er offene Anwendung so hören Lösung für Sie – 1) Check ist Gerät hat api 23+

    2) Wenn 23+ api dann überprüfen, ob Benutzer erlaubt hat oder nicht

    3) wenn hatte permite einmal fahren sie nicht zu Settings.ACTION_MANAGE_OVERLAY_PERMISSION & wenn noch nicht erlaubt dann fragen Sie nach Laufzeit Berechtigung überprüfen

      Put below line in in your Oncreate() method Put this after setContentView checkPermission(); 

    Jetzt unter Code in onActivityResult

      @TargetApi(Build.VERSION_CODES.M) @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == ACTION_MANAGE_OVERLAY_PERMISSION_REQUEST_CODE) { if (!Settings.canDrawOverlays(this)) { // You don't have permission checkPermission(); } else { //do as per your logic } } } 

    Jetzt endlich die checkPermission Methode Code

     public void checkPermission() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (!Settings.canDrawOverlays(this)) { Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + getPackageName())); startActivityForResult(intent, ACTION_MANAGE_OVERLAY_PERMISSION_REQUEST_CODE); } } } 

    Und vergessen Sie nicht, diese öffentliche Variable in Ihrer Klasse zu deklarieren

     public static int ACTION_MANAGE_OVERLAY_PERMISSION_REQUEST_CODE= 5469; 

    Prost ! 😉

    Wenn die App API 22 oder niedriger ankommt, gibt der Play Store die Berechtigung SYSTEM_ALERT_WINDOW und andere, wenn der Benutzer auf die Installation startet (zeigt eine Warnung), auch wenn sein Gerät Android 6.0 ist. Andernfalls, wenn die App API 23 oder höher zielt, so dass Die Erlaubnis wird in der Laufzeit beantragt.

    Das Android ist ein Google Android Fan-Website, Alles über Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.