From 399ac289f80b7a40aa4210341db6b447cacdcf14 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期二, 09 八月 2022 17:42:33 +0800 Subject: [PATCH] 广告升级,隐私政策整改 --- app/src/main/java/com/tejia/lijin/app/util/TopStatusSettings.java | 200 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 198 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/tejia/lijin/app/util/TopStatusSettings.java b/app/src/main/java/com/tejia/lijin/app/util/TopStatusSettings.java index 5098845..a44342e 100644 --- a/app/src/main/java/com/tejia/lijin/app/util/TopStatusSettings.java +++ b/app/src/main/java/com/tejia/lijin/app/util/TopStatusSettings.java @@ -3,7 +3,10 @@ import android.app.Activity; import android.graphics.Color; import android.os.Build; +import android.os.Environment; +import android.text.TextUtils; import android.view.View; +import android.view.ViewGroup; import android.view.Window; import android.view.WindowManager; import android.widget.LinearLayout; @@ -11,7 +14,11 @@ import com.tejia.lijin.app.R; +import java.io.File; +import java.io.FileInputStream; import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.util.Properties; /** * Created by weikou2015 on 2018/9/13. @@ -163,8 +170,13 @@ } //璁剧疆鐘舵�佹爮鏂囧瓧棰滆壊鍙婂浘鏍囦负娣辫壊 mActivity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); - RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, result); - mActivity.findViewById(R.id.v_status_bar).setLayoutParams(params); + ViewGroup.LayoutParams params=mActivity.findViewById(R.id.v_status_bar).getLayoutParams(); + params.width=ViewGroup.LayoutParams.MATCH_PARENT; + params.height=result; +// RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, result); +// if( mActivity.findViewById(R.id.v_status_bar).getLayoutParams() instanceof RelativeLayout.LayoutParams) { +// mActivity.findViewById(R.id.v_status_bar).setLayoutParams(params); +// } try { Class decorViewClazz = Class.forName("com.android.internal.policy.DecorView"); Field field = decorViewClazz.getDeclaredField("mSemiTransparentStatusBarColor"); @@ -203,4 +215,188 @@ } } } + + /** + * 淇敼鐘舵�佹爮鏂囧瓧棰滆壊锛岃繖閲屽皬绫筹紝榄呮棌鍖哄埆瀵瑰緟銆� + */ + public static void setLightStatusBar(final Activity activity, final boolean dark) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + switch (RomUtils.getLightStatusBarAvailableRomType()) { + case RomUtils.AvailableRomType.MIUI: + MIUISetStatusBarLightMode(activity, dark); + break; + + case RomUtils.AvailableRomType.FLYME: + setFlymeLightStatusBar(activity, dark); + + break; + + case RomUtils.AvailableRomType.ANDROID_NATIVE: + setAndroidNativeLightStatusBar(activity, dark); + break; + + } + } + } + + + public static boolean MIUISetStatusBarLightMode(Activity activity, boolean dark) { + boolean result = false; + Window window = activity.getWindow(); + if (window != null) { + Class clazz = window.getClass(); + try { + int darkModeFlag = 0; + Class layoutParams = Class.forName("android.view.MiuiWindowManager$LayoutParams"); + Field field = layoutParams.getField("EXTRA_FLAG_STATUS_BAR_DARK_MODE"); + darkModeFlag = field.getInt(layoutParams); + Method extraFlagField = clazz.getMethod("setExtraFlags", int.class, int.class); + if (dark) { + extraFlagField.invoke(window, darkModeFlag, darkModeFlag);//鐘舵�佹爮閫忔槑涓旈粦鑹插瓧浣� + } else { + extraFlagField.invoke(window, 0, darkModeFlag);//娓呴櫎榛戣壊瀛椾綋 + } + result = true; + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && RomUtils.isMiUIV7OrAbove()) { + //寮�鍙戠増 7.7.13 鍙婁互鍚庣増鏈噰鐢ㄤ簡绯荤粺API锛屾棫鏂规硶鏃犳晥浣嗕笉浼氭姤閿欙紝鎵�浠ヤ袱涓柟寮忛兘瑕佸姞涓� + if (dark) { + activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); + } else { + activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE); + } + } + } catch (Exception e) { + + } + } + return result; + } + + private static boolean setFlymeLightStatusBar(Activity activity, boolean dark) { + boolean result = false; + if (activity != null) { + try { + WindowManager.LayoutParams lp = activity.getWindow().getAttributes(); + Field darkFlag = WindowManager.LayoutParams.class + .getDeclaredField("MEIZU_FLAG_DARK_STATUS_BAR_ICON"); + Field meizuFlags = WindowManager.LayoutParams.class + .getDeclaredField("meizuFlags"); + darkFlag.setAccessible(true); + meizuFlags.setAccessible(true); + int bit = darkFlag.getInt(null); + int value = meizuFlags.getInt(lp); + if (dark) { + value |= bit; + } else { + value &= ~bit; + } + meizuFlags.setInt(lp, value); + activity.getWindow().setAttributes(lp); + result = true; + } catch (Exception e) { + } + } + return result; + } + + private static void setAndroidNativeLightStatusBar(Activity activity, boolean dark) { + View decor = activity.getWindow().getDecorView(); + if (dark) { + decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); + } else { + decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE); + } + } + + public static class RomUtils { + class AvailableRomType { + public static final int MIUI = 1; + public static final int FLYME = 2; + public static final int ANDROID_NATIVE = 3; + public static final int NA = 4; + } + + public static int getLightStatusBarAvailableRomType() { + //寮�鍙戠増 7.7.13 鍙婁互鍚庣増鏈噰鐢ㄤ簡绯荤粺API锛屾棫鏂规硶鏃犳晥浣嗕笉浼氭姤閿� + if (isMiUIV7OrAbove()) { + return AvailableRomType.ANDROID_NATIVE; + } + + if (isMiUIV6OrAbove()) { + return AvailableRomType.MIUI; + } + + if (isFlymeV4OrAbove()) { + return AvailableRomType.FLYME; + } + + if (isAndroidMOrAbove()) { + return AvailableRomType.ANDROID_NATIVE; + } + + return AvailableRomType.NA; + } + + //Flyme V4鐨刣isplayId鏍煎紡涓� [Flyme OS 4.x.x.xA] + //Flyme V5鐨刣isplayId鏍煎紡涓� [Flyme 5.x.x.x beta] + private static boolean isFlymeV4OrAbove() { + String displayId = Build.DISPLAY; + if (!TextUtils.isEmpty(displayId) && displayId.contains("Flyme")) { + String[] displayIdArray = displayId.split(" "); + for (String temp : displayIdArray) { + //鐗堟湰鍙�4浠ヤ笂锛屽舰濡�4.x. + if (temp.matches("^[4-9]\\.(\\d+\\.)+\\S*")) { + return true; + } + } + } + return false; + } + + //Android Api 23浠ヤ笂 + private static boolean isAndroidMOrAbove() { + return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M; + } + + private static final String KEY_MIUI_VERSION_CODE = "ro.miui.ui.version.code"; + + private static boolean isMiUIV6OrAbove() { + try { + final Properties properties = new Properties(); + properties.load(new FileInputStream(new File(Environment.getRootDirectory(), "build.prop"))); + String uiCode = properties.getProperty(KEY_MIUI_VERSION_CODE, null); + if (uiCode != null) { + int code = Integer.parseInt(uiCode); + return code >= 4; + } else { + return false; + } + + } catch (final Exception e) { + return false; + } + + } + + static boolean isMiUIV7OrAbove() { + try { + final Properties properties = new Properties(); + properties.load(new FileInputStream(new File(Environment.getRootDirectory(), "build.prop"))); + String uiCode = properties.getProperty(KEY_MIUI_VERSION_CODE, null); + if (uiCode != null) { + int code = Integer.parseInt(uiCode); + return code >= 5; + } else { + return false; + } + + } catch (final Exception e) { + return false; + } + + } + + } + } -- Gitblit v1.8.0