在没有 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), 那你就没有办法改变状态栏的颜色了。

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