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

Sar*_*enz 6 android statusbar android-windowmanager android-statusbar android-window

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

public abstract void setStatusBarColor (int color)
Run Code Online (Sandbox Code Playgroud)

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

所以因为它是抽象的我无法启动它而且我不能使用getWindow()因为我没有实现一个活动类.以下答案使用Activity.还有其他方法可以实现吗? 如何更改android中的状态栏颜色

azi*_*ian 5

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

你不应该自己创建一个Window类的实例,这是你应该从框架中获取的东西,特别是从活动中获取的东西.只要您没有活动,就无法获得对Window实例的引用 .

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

想象一下,框架允许做这些事情,然后当用户甚至没有打开恶意应用程序时,它可能会被恶意应用程序误用,每秒随机更改状态栏颜色.我认为这将被视为一个缺陷,而不是一个功能.