Oreo (API 26) - drawOverlay + 绘制状态栏

Oreo (API 26) - drawOverlay + draw over status bar

在android奥利奥中,我不能再使用WindowManager.LayoutParams.TYPE_SYSTEM_ERROR,必须改用WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY。缺点是,此模式不会覆盖状态栏。

有没有办法既能实现旧行为又能覆盖状态栏?我有一个侧边栏应用程序,直到现在,我还允许用户在屏幕顶部也有触发区域,现在不再起作用,因为状态栏现在与顶部的可触摸区域重叠...

我对任何解决方案都感兴趣,即使它只适用于某些设备,例如 root 设备......我认为这个问题没有正常的解决方案,因为 android 系统没有如文档 (https://developer.android.com/about/versions/oreo/android-8.0-changes.html#o-apps) 中所述,不再允许这样做。尽管如此,这并不一定意味着没有替代解决方案...

不幸的是,这已经不可能了...

利用此功能的开发人员已在 Android’s Issue Tracker (#260787 and #36574245) 上打开 bug 报告以抗议更改并要求替代 API,但一位 Google 员工评论了 tracker使用以下语句:

Status: Won’t Fix (Intended Behavior)

We have followed up with the product and engineering team and got suggestion that developers can use SHOW_WHEN_LOCKED activities to show when the device is locked, but it is intentionally no longer possible to show over the lockscreen / over the notification shade

唯一的解决方案是将目标 sdk 设置为 25

恐怕你不能在 android oreo 中做到这一点,因为 google 停止支持,直到日期为止。可能在未来他们可能会考虑实施它,因为许多开发人员对此表示抗议。

有关详细信息,请访问以下链接:

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/

文档说该标志已被弃用用于非系统应用程序。您是否尝试过将应用设为系统应用?

This constant was deprecated in API level 26. for non-system apps.

ES 文件资源管理器的使用方法如下:

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.