欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

关于部分小米机型沉浸式图标变色失败的解决方式

程序员文章站 2022-04-21 17:57:36
...

Android 6.0 的部分小米手机反色失败

具体原因参考: https://dev.mi.com/console/doc/detail?pId=1159

[ANDROID 6.0 , MIUI 7.7.13) 区间的小米过度机型的判断方式

    /**
     * 兼容[ANDROID 6.0 , MIUI 7.7.13)区间的特殊版本
     * <href>https://dev.mi.com/console/doc/detail?pId=1159</>
     */
    @SuppressWarnings("all")
    public static boolean isSpecialMiUi() {
        if (isSpecialMiUi >= 0) {
            return isSpecialMiUi == 1;
        }
        boolean isSpecial = false;
        if (isMiUi && Build.VERSION.SDK_INT >= 23 && Build.VERSION.SDK_INT <= 27) {
            try {
                Class var4 = Class.forName("android.os.SystemProperties");
                Method getStringMethod = var4.getDeclaredMethod("get", new Class[]{String.class});
                // 2017-7-13 00:00:00 秒单位的版本时间戳 1499875200
                String codeTime = (String) getStringMethod.invoke(var4, new Object[]{"ro.miui.version.code_time"});
                Log.i(FConstants.TAG.SDK, "MiUi codeTime = " + codeTime);
                isSpecial = !TextUtils.isEmpty(codeTime) && Long.valueOf(codeTime) < 1499875200;
            } catch (Throwable e) {
                Log.e(FConstants.TAG.SDK, "isSpecialMiUi----->", e);
            }
        }
        Log.i(FConstants.TAG.SDK, "isSpecialMiUi = " + isSpecial);
        isSpecialMiUi = isSpecial ? 1 : 0;
        return isSpecial;
    }

    private static int isSpecialMiUi = -1;

为 true则使用小米自定义的状态栏图标变色方式,false则使用Android官方变色方式