如何像默认手机应用那样将整个设备的状态栏颜色设置为绿色?

问题描述

我正在开发一款可以拨打和接听 VoIP 语音电话的应用。由于我想模仿认电话行为,因此我想在接听电话时执行系统所做的相同操作:在接听电话时将状态栏涂成绿色,以突出显示用户正在通话。

只是为了澄清以避免被标记为重复:这个问题与更改状态栏颜色有关,不仅在我们的活动中,而且在整个设备中,就像一些电话在通话中一样。

有可能实现吗?

解决方法

使用这样的东西(版本> 23)

这是我的旧方法。有些东西已被弃用,找到解决方案并修复它

protected void setStatusBarColor(View view,int color,boolean isLight) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        if(color == 0) color = ContextCompat.getColor(this,R.color.colorPrimaryDark);
        
        if(isLight) {
            int flags = view.getSystemUiVisibility();
            flags |= View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
            view.setSystemUiVisibility(flags);
        }
        //getWindow().setStatusBarColor(Color.WHITE);

        Window window = getWindow();
        window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
        window.setStatusBarColor(color);
    }
}