6

我想在后台操作状态栏(例如颜色)。我正在使用前台服务来执行此操作。因此没有窗口,因为它在后台发生,特别是没有活动。然而,函数

public abstract void setStatusBarColor (int color)

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

因此,因为它是抽象的,所以我无法启动它,也无法使用 getWindow(),因为我没有实现活动类。以下答案使用活动。还有其他方法可以实现吗? 如何在android中更改状态栏颜色

4

1 回答 1

5

所以因为它 ( setStatusBarColor()) 是抽象的,所以我无法启动它,也无法使用getWindow()

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

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

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

于 2018-01-28T10:35:15.457 回答