MIUI 和 EMUI 系统版本号获取 - litonghui/TechBlog GitHub Wiki

通过反射和进程读取两种方式获取:

MIUI:ro.miui.ui.version.name
EMUI:ro.build.version.emui

反射:

public static String getSystemProperty(String propName) {
    Class<?> classType = null;
    String buildVersion = null;
    try {
        classType = Class.forName("android.os.SystemProperties");
        Method getMethod = classType.getDeclaredMethod("get", new Class<?>[]{String.class});
        buildVersion = (String) getMethod.invoke(classType, new Object[]{propName}); 
    } catch (Exception e) {
        e.printStackTrace();
    }
    return buildVersion;
}

读取进程:

public static String getSystemProperty(String propName){
    String line;
    BufferedReader input = null;
    try
    {
        Process p = Runtime.getRuntime().exec("getprop " + propName);
        input = new BufferedReader(new InputStreamReader(p.getInputStream()), 1024);
        line = input.readLine();
        input.close();
    }
    catch (IOException ex)
    {
        Log.e("lth", "Unable to read sysprop " + propName, ex);
        return null;
    }
    finally
    {
        if(input != null)
        {
            try
            {
                input.close();
            }
            catch (IOException e)
            {
                Log.e("lth", "Exception while closing InputStream", e);
            }
        }
    }
    return line;
}