我想操纵状态栏(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
答案 0 :(得分:5)
因为它(
setStatusBarColor()
)是抽象的我无法启动它而我无法使用getWindow()
你应该不自己创建一个Window
课程的实例,那就是
你应该从框架中获取的东西,特别是来自活动的东西。
只要你不有活动,你就无法获得对a的引用
Window
个实例。
假设您的应用程序在前台不(即没有任何可见活动), 那么你无法改变状态栏的颜色。
想象一下,框架会允许这样做,然后它可能会被滥用 恶意应用程序每秒随机更改状态栏颜色,当用户不均匀时 打开了恶意应用。我认为这将被视为一个缺陷,而不是一个功能。