有时候需要判断手机系统的ROM,检测ROM是MIUI、EMUI还是Flyme,可以使用getprop命令,去系统build.prop文件查找是否有对应属性来判断是什么ROM。build.prop的介绍可以看Android build.prop简介

  1. 小米

小米官方文档:如何识别小米设备/MIUI系统
判断小米设备
Build.MANUFACTURER是否为Xiaomi
查询build.prop是否有ro.miui.ui.version.name属性
ps:Build.MODEL是机器型号,小米2是MI 2
判断MIUI版本
ro.miui.ui.version.name返回V5表示是MIUI V5系统,V6表示MIUI V6系统

  1. 华为

查询build.prop是否有ro.build.version.emui属性

  1. OPPO

查询build.prop是否有ro.build.version.opporom属性

  1. VIVO

查询build.prop是否有ro.vivo.os.version属性

  1. 锤子

查询build.prop是否有ro.smartisan.version属性

  1. 魅族

Build.DISPLAY是否包含“FLYME”字符串

  1. 360

Build.MANUFACTURER为“QIKU”或“360”

  1. 乐视

待测试。。。

如果官方没有给出用哪个属性判断,就要自己来决定了,一般系统ROM登记都有一个内部版本号,是个不错的选择,例如小米ro.miui.ui.version.code,华为ro.build.hw_emui_api_level

附代码:

public class Rom {    private static final String TAG = "Rom";    public static final String ROM_MIUI = "MIUI";    public static final String ROM_EMUI = "EMUI";    public static final String ROM_FLYME = "FLYME";    public static final String ROM_OPPO = "OPPO";    public static final String ROM_SMARTISAN = "SMARTISAN";    public static final String ROM_VIVO = "VIVO";    public static final String ROM_QIKU = "QIKU";    private static final String KEY_VERSION_MIUI = "ro.miui.ui.version.name";    private static final String KEY_VERSION_EMUI = "ro.build.version.emui";    private static final String KEY_VERSION_OPPO = "ro.build.version.opporom";    private static final String KEY_VERSION_SMARTISAN = "ro.smartisan.version";    private static final String KEY_VERSION_VIVO = "ro.vivo.os.version";    private static String sName;    private static String sVersion;    public static boolean isEmui() {        return check(ROM_EMUI);    }    public static boolean isMiui() {        return check(ROM_MIUI);    }    public static boolean isVivo() {        return check(ROM_VIVO);    }    public static boolean isOppo() {        return check(ROM_OPPO);    }    public static boolean isFlyme() {        return check(ROM_FLYME);    }    public static boolean is360() {        return check(ROM_QIKU) || check("360");    }    public static boolean isSmartisan() {        return check(ROM_SMARTISAN);    }    public static String getName() {        if (sName == null) {            check("");        }        return sName;    }        public static String getVersion() {        if (sVersion == null) {            check("");        }        return sVersion;    }    public static boolean check(String rom) {        if (sName != null) {            return sName.equals(rom);        }        if (!TextUtils.isEmpty(sVersion = getProp(KEY_VERSION_MIUI))) {            sName = ROM_MIUI;        } else if (!TextUtils.isEmpty(sVersion = getProp(KEY_VERSION_EMUI))) {            sName = ROM_EMUI;        } else if (!TextUtils.isEmpty(sVersion = getProp(KEY_VERSION_OPPO))) {            sName = ROM_OPPO;        } else if (!TextUtils.isEmpty(sVersion = getProp(KEY_VERSION_VIVO))) {            sName = ROM_VIVO;        } else if (!TextUtils.isEmpty(sVersion = getProp(KEY_VERSION_SMARTISAN))) {            sName = ROM_SMARTISAN;        } else {            sVersion = Build.DISPLAY;            if (sVersion.toUpperCase().contains(ROM_FLYME)) {                sName = ROM_FLYME;            } else {                sVersion = Build.UNKNOWN;                sName = Build.MANUFACTURER.toUpperCase();            }        }        return sName.equals(rom);    }    public static String getProp(String name) {        String line = null;        BufferedReader input = null;        try {            Process p = Runtime.getRuntime().exec("getprop " + name);            input = new BufferedReader(new InputStreamReader(p.getInputStream()), 1024);            line = input.readLine();            input.close();        } catch (IOException ex) {            Log.e(TAG, "Unable to read prop " + name, ex);            return null;        } finally {            if (input != null) {                try {                    input.close();                } catch (IOException e) {                    e.printStackTrace();                }            }        }        return line;    }}



链接: https://www.jianshu.com/p/ba9347a5a05a
來源:简书


更多相关文章

  1. Android(安卓)开发最佳实践--转自Git
  2. Android(安卓)读写配置文件properties
  3. 小米文件管理器源码
  4. 布局中@null的代码实现方式
  5. Android系统java层次service实现
  6. Android音频系统学习笔记
  7. Android、H5 单独调起拍照与摄像
  8. ART模式下dex2oat出错导致系统无法正常启动
  9. 6.0 M系统权限处理之Dexter

随机推荐

  1. jsp 自定义标签实例
  2. jsp 自定义标签实例
  3. 函数参数,返回值与模板字面量,模板函数
  4. 实例讲解JSP获取ResultSet结果集中的数据
  5. 访问器的原理及DOM元素
  6. 函数的参数和返回值问题以及模板字面量和
  7. 通过Setters方式对日期属性及日期格式进
  8. 初识HTML标签功能
  9. 通过Setters方式对日期属性及日期格式进
  10. 访问JSP文件或者Servlet文件时提示下载的