web-dev-qa-db-de.com

Oreo (API 26) - drawOverlay + über die Statusleiste ziehen

In Android oreo kann ich WindowManager.LayoutParams.TYPE_SYSTEM_ERROR nicht mehr verwenden und muss stattdessen WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY verwenden. Der Nachteil ist, dass dieser Modus nicht über die Statusleiste gezogen wird.

Gibt es sowieso das alte Verhalten zu erreichen und auch über die Statusleiste ziehen zu können? Ich habe eine Sidebar-App, und bis jetzt habe ich dem Benutzer erlaubt, auch Triggerbereiche auf dem Bildschirm zu haben, was jetzt nicht mehr funktioniert, da die Statusleiste den berührbaren Bereich oben überlappt ...

Ich interessiere mich für jede Lösung, auch wenn es nur für einige Geräte, wie z. B. gerootete Geräte, gilt. Meines Erachtens gibt es keine normale Lösung für dieses Problem, da das Android-System dies nicht mehr zulässt, wie in den Dokumenten angegeben https://developer.Android.com/about/versions/oreo/Android-8.0-changes.html#o-apps ). Dies bedeutet jedoch nicht, dass es keine alternative Lösung gibt ...

15
prom85

Die Dokumente besagen, dass das Flag für Nicht-System-Apps nicht mehr verwendet wird. Haben Sie versucht, aus der App eine System-App zu machen?

Diese Konstante wurde in API-Level 26 für Nicht-System-Apps nicht mehr unterstützt.

So geht es mit dem ES File Explorer:

Configure ES File Explorer by doing the following steps:
    Launch ES File Explorer.
    Select Menu and choose Settings.
    Under Settings, enable the options for Up to root and Root Explorer. A message will appear, requiring you to confirm your action. You will also need to confirm Superuser access.
    Enable Mount File System.
    Go back to the app’s main menu.
Get a copy of the APK (Android Package) of the app that you want to save as a system file by doing the following steps (skip to step 3 if you already have the app’s APK file):
    Install an app from the Google Play Store. For this guide, we will be using the app BioRhythms as an example.
    Launch ES File Explorer and navigate to /data/app.
    Locate the APK file that you want to install as a system app. If you don’t know the APK’s filename, simply go to the Google Play Store link of your chosen app. View the link and take note of the words after “?id=”. This will be your APK’s filename. For instance, the BioRhythms app link is https://play.google.com/store/apps/details?id=app.biorhythms. The BioRhythms’ APK is app.biorhythms-1.apk.
Create a backup of the chosen APK by copying it to the phone’s SD Card.
After creating a backup, long tap on the APK file and a menu will appear. Choose Cut. A blue arrow will appear at the bottom of the screen.
Go back to the main menu and navigate to /system/app/.
Drag the little arrow at the bottom of the screen. It will bring up the icon of the APK file.
Tap the APK file and it will be transferred to /system/app/.
Find the APK file in /system/app/. Press and hold it and a menu will appear.
Select Properties on the menu. The dialog properties will show up.
Tap Change and it will show the permissions dialog box.
Check the boxes for the following permissions in the dialog box:
    User: Read and Write
    Group: Read
    Other: Read
Select OK once the required settings have been made.
Reboot your device.
2
sfratini

Das ist leider nicht mehr möglich ... 

Entwickler, die diese Funktion verwenden, haben bug-Berichte zu Android’s Issue Tracker (#260787 and #36574245) geöffnet, um gegen die Änderung zu protestieren und nach einer alternativen API zu fragen, aber ein Googler kommentierte die tracker mit der folgenden Anweisung:

Status: Nicht behoben (beabsichtigtes Verhalten)

Wir haben uns mit dem Produkt- und Engineering-Team befasst und haben den Vorschlag erhalten, dass Entwickler SHOW_WHEN_LOCKED-Aktivitäten zum Anzeigen von .__ verwenden können. wenn das Gerät gesperrt ist, es jedoch absichtlich nicht mehr möglich ist über dem Sperrbildschirm/über dem Benachrichtigungsschatten anzeigen

und es gibt nur eine Lösung dafür, die Sie als sdk als Ziel festlegen

2

Ich fürchte, Sie können das in Android oreo nicht tun, da Google die Unterstützung dafür eingestellt hat, dass die Benachrichtigungslinie bis zum Datum gezogen wird. Vielleicht denken sie in der Zukunft, dies auch umzusetzen, da viele Entwickler dagegen protestieren. 

Für weitere Informationen besuchen Sie die folgenden Links:

https://www.androidauthority.com/Android-o-draw-over-system-763178/

https://www.reddit.com/r/Android/comments/64ffk1/Android_o_is_breaking_apps_that_overlay_on_top_of/

0
M.Saad Lakhan