在没有Window的情况下更改状态栏颜色

时间:2018-01-25 15:24:51

标签: android statusbar android-windowmanager android-statusbar android-window

我想操纵状态栏(ex.color)但在后台。我正在使用前台服务来执行此操作。因此,没有窗口,因为它在后台发生,特别是没有活动。但是,功能

public abstract void setStatusBarColor (int color)

由抽象类Window调用:https://developer.android.com/reference/android/view/Window.html

因为它是抽象的我无法启动它而且我不能使用getWindow(),因为我没有实现一个活动类。 以下答案使用Activity。还有其他方法可以实现吗? How to change the status bar color in android

1 个答案:

答案 0 :(得分:5)

  

因为它(setStatusBarColor())是抽象的我无法启动它而我无法使用getWindow()

你应该自己创建一个Window课程的实例,那就是 你应该从框架中获取的东西,特别是来自活动的东西。 只要你有活动,你就无法获得对a的引用 Window个实例。

假设您的应用程序在前台(即没有任何可见活动), 那么你无法改变状态栏的颜色。

想象一下,框架会允许这样做,然后它可能会被滥用 恶意应用程序每秒随机更改状态栏颜色,当用户不均匀时 打开了恶意应用。我认为这将被视为一个缺陷,而不是一个功能。