在没有 Window 的情况下更改状态栏颜色
Change status bar color without having Window
我想在后台操作状态栏 (ex.color)。我正在使用前台服务来执行此操作。因此没有 window 因为它在后台发生,特别是没有 activity。然而,函数
public abstract void setStatusBarColor (int color)
被摘要调用 class Window: https://developer.android.com/reference/android/view/Window.html
因此,因为它是抽象的,所以我无法启动它,也无法使用 getWindow(),因为我没有实现 activity class。
以下答案使用 Activity。还有另一种方法可以实现吗?
How to change the status bar color in android
And so because it (setStatusBarColor()
) is abstract I cannot initiate it and I can't use getWindow()
你应该不自己创建一个Window
class的实例,那是
你应该从框架中获取的东西,特别是从 activity 中获取的东西。
只要你没有有一个activity,你就不能得到一个引用
Window
实例。
假设您的应用进程 不是 在前台(即没有任何可见的 activity),
那你就没有办法改变状态栏的颜色了。
想象一下框架允许做这样的事情,那么它可能会被滥用
恶意应用每秒随机更改状态栏颜色,当用户甚至没有
打开恶意应用程序。我认为这将被视为缺陷,而不是功能。
我想在后台操作状态栏 (ex.color)。我正在使用前台服务来执行此操作。因此没有 window 因为它在后台发生,特别是没有 activity。然而,函数
public abstract void setStatusBarColor (int color)
被摘要调用 class Window: https://developer.android.com/reference/android/view/Window.html
因此,因为它是抽象的,所以我无法启动它,也无法使用 getWindow(),因为我没有实现 activity class。 以下答案使用 Activity。还有另一种方法可以实现吗? How to change the status bar color in android
And so because it (
setStatusBarColor()
) is abstract I cannot initiate it and I can't usegetWindow()
你应该不自己创建一个Window
class的实例,那是
你应该从框架中获取的东西,特别是从 activity 中获取的东西。
只要你没有有一个activity,你就不能得到一个引用
Window
实例。
假设您的应用进程 不是 在前台(即没有任何可见的 activity), 那你就没有办法改变状态栏的颜色了。
想象一下框架允许做这样的事情,那么它可能会被滥用 恶意应用每秒随机更改状态栏颜色,当用户甚至没有 打开恶意应用程序。我认为这将被视为缺陷,而不是功能。