项目遇到个问题,状态栏会随着APK变化。
Bug描述:
有的时候各种打开某个apk,比如settings 或者 google play,chrom浏览器等
systemui的图标会看不清
Bug产生的原因:
Android 在7.1后面支持的沉浸式状态栏,apk可以根据自身配色,修改systemui状态栏的
背景颜色 和前景文字图标颜色,但是我们自己加了一些图标以及有些图标没有做好变色
会有各种跟apk的颜色不匹配的情况,目前发现只是有六七个图标颜色有时不对,右上角
时间也有时不对
动作、解决方案:
彻底的解决方案 不允许apk修改 systemui的状态栏背景色 和 图标的颜色,即不允许切换
深色和浅色主题,目前试过效果明显 ,sytemui 一直保持黑色背景和白色图标,整体看起来
也很和谐
diff --git a/android/frameworks/base/core/java/android/view/View.java b/android/frameworks/base/core/java/android/view/View.java
index 8e79821..0066a63 100755
--- a/android/frameworks/base/core/java/android/view/View.java
+++ b/android/frameworks/base/core/java/android/view/View.java
@@ -22647,6 +22647,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
* and {@link #SYSTEM_UI_FLAG_IMMERSIVE_STICKY}.
*/
public void setSystemUiVisibility(int visibility) {
+ visibility= visibility&0xFFFFDFFF;//add by fan 2019.06.21
+ // clear SYSTEM_UI_FLAG_LIGHT_STATUS_BAR = 0x00002000 FLAG do not let apk change systemui statue bar text|icon color
if (visibility != mSystemUiVisibility) {
mSystemUiVisibility = visibility;
if (mParent != null && mAttachInfo != null && !mAttachInfo.mRecomputeGlobalAttributes) {
diff --git a/android/frameworks/base/core/java/com/android/internal/policy/PhoneWindow.java b/android/frameworks/base/core/java/com/android/internal/policy/PhoneWindow.java
index 3dab8ee..e8d11d5 100755
--- a/android/frameworks/base/core/java/com/android/internal/policy/PhoneWindow.java
+++ b/android/frameworks/base/core/java/com/android/internal/policy/PhoneWindow.java
@@ -3860,6 +3860,11 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
@Override
public void setStatusBarColor(int color) {
+ Log.w(TAG, "setStatusBarColor: " + color);
+ if(color>=0) //add by fan do not let apk change statubar BG color 2019.06.21
+ {
+ return;
+ }
mStatusBarColor = color;
mForcedStatusBarColor = true;