code: package com.lody.virtual.helper.utils;
  
  import java.io.File;
  import java.io.FileInputStream;
  import java.io.IOException;
  import java.lang.reflect.Method;
  import java.util.Properties;
  
  import android.os.Build;
  import android.os.Environment;
  import android.text.TextUtils;
  
  /**
   * Created by 247321453 on 2016/7/17.
   */
  public class OSUtils {
  	private static final String KEY_EMUI_VERSION_CODE = "ro.build.version.emui";
  	private static final String KEY_MIUI_VERSION_CODE = "ro.miui.ui.version.code";
  	private static final String KEY_MIUI_VERSION_NAME = "ro.miui.ui.version.name";
  	private static final String KEY_MIUI_INTERNAL_STORAGE = "ro.miui.internal.storage";
  
  	private static final OSUtils sOSUtils = new OSUtils();
  	private boolean emui;
  	private boolean miui;
  	private boolean flyme;
  	private String miuiVersion;
  	private OSUtils() {
  		Properties properties;
  		try {
  			properties = new Properties();
  			properties.load(new FileInputStream(new File(Environment.getRootDirectory(), "build.prop")));
  		} catch (IOException e) {
  			properties = null;
  		}
  		if (properties != null) {
  			emui = !TextUtils.isEmpty(properties.getProperty(KEY_EMUI_VERSION_CODE));
  			miuiVersion = properties.getProperty(KEY_MIUI_VERSION_CODE);
  			miui = !TextUtils.isEmpty(miuiVersion) || !TextUtils.isEmpty(properties.getProperty(KEY_MIUI_VERSION_NAME))
  					|| !TextUtils.isEmpty(properties.getProperty(KEY_MIUI_INTERNAL_STORAGE));
  		}
  		flyme = hasFlyme();
  	}
  
  	public static OSUtils getInstance() {
  		return sOSUtils;
  	}
  
  	public String getMiuiVersion() {
  		return miuiVersion;
  	}
  
  	public boolean isEmui() {
  		return emui;
  	}
  
  	public boolean isMiui() {
  		return miui;
  	}
  
  	public boolean isFlyme() {
  		return flyme;
  	}
  
  	private boolean hasFlyme() {
  		try {
  			final Method method = Build.class.getMethod("hasSmartBar");
  			return method != null;
  		} catch (final Exception e) {
  			return false;
  		}
  	}
  }
  