Android:如何优雅的识别MIUI,Flyme

2,431 阅读1分钟

一、识别MIUI  miui提供的系统资料

如何检测小米设备:

请使用android.os.Build对象,查询MANUFACTURER和MODEL的值,MANUFACTURER值为Xiaomi即为小米设备

代码实现:

public static boolean isMiuiDevices(){
    String devicesName = Build.MANUFACTURER;
    if (devicesName.equals("Xiaomi"))
        return true;
    else
        return false;
}

如何检测MIUI V5:

查询property: ro.miui.ui.version.name ,值是”V5″ 就是MIUI V5系统;值是”V6″就是MIUI 6系统。

代码实现:

public static boolean isMiui() {
    try {
        Class<?> sysClass = Class.forName("android.os.SystemProperties");
        Method getStringMethod = sysClass.getDeclaredMethod("get", String.class);
        String version = (String) getStringMethod.invoke(sysClass, "ro.miui.ui.version.name");
        if (!TextUtils.isEmpty(version)) {
            if (version.length() < 2) return false;
            try {
                int num = Integer.valueOf(version.substring(1));
                return num >= 6;
            } catch (NumberFormatException e) {
                return false;
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return false;
}

二、识别Flyme

代码实现:

public static boolean isFlyme() {
    try {
        Class<?> sysClass = Class.forName("android.os.SystemProperties");
        Method getStringMethod = sysClass.getDeclaredMethod("get", String.class);
        String version = (String) getStringMethod.invoke(sysClass, "ro.build.display.id");
        if (!TextUtils.isEmpty(version)) {
            if (version.toLowerCase().contains("flyme"))
                return true;
            //判断系统版本是否大于flyme4
            //int num;
            //if (version.toLowerCase().contains("os")) {
            //    num = Integer.valueOf(version.substring(9, 10));
            //} else {
            //    num = Integer.valueOf(version.substring(6, 7));
            //}
            //return num >= 4;
        }
    } catch (Exception e) {
    }
    return false;
}