有时候需要判断手机系统的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系统

2. 华为

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

3. OPPO

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

4. VIVO

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

5. 锤子

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

6. 魅族

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

7. 360

Build.MANUFACTURER为“QIKU”或“360”

8. 乐视

待测试。。。

如果官方没有给出用哪个属性判断,就要自己来决定了,一般系统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;

}

}

//原贴地址:http://www.jianshu.com/p/ba9347a5a05a

android 判断手机rom,Android判断手机ROM 手机os相关推荐

  1. android 动态录音权限,Android如何判断手机是否有录音权限的工具类

    作用 判断手机是否有录音权限的工具类,兼容6.0以上以及以下android系统 测试环境 这篇文章是评论中的网友提出质疑后,经过重写修改与重写测试后编写的,我的调试环境是小米note3,Android ...

  2. android sd卡 格式化 rom,Android开发之获取SD卡及手机ROM容量的方法

    本文实例讲述了Android获取SD卡及手机ROM容量的方法.分享给大家供大家参考,具体如下: 这里通过一个简单的小例子,来获取SD卡的容量和手机ROM的容量,代码如下: package com.ur ...

  3. mtk android 5.1 logo,Android ROM DIY之MTK平台手机通用移植

    在之前的文章中,我们讨论过ROM刷机原理,修改ROM包以及如何让ROM包获取root权限.那么接下来,我们谈谈MTK平台手机ROM移植的话题.如果你是ROM小白,那么建议可以先看看之前的文章. ROM ...

  4. android iphone css,css能判断手机是安卓还是ios吗?

    前端写web页面的时候会遇到安卓手机与iOS手机页面展示不一样,还有就是在写APP的时候,此时就会遇到判断手机类型.那么css能够判断手机类型是安卓还是ios吗? css能判断手机是安卓还是ios吗? ...

  5. android学习笔记之——获取SD卡及手机ROM容量

    继续android学习之旅,今天通过一个小例子,来获取SD卡的容量和手机ROM的容量,具体代码如下: package com.urovo.sdcardspace;import java.io.File ...

  6. android rom打包失败,导致安卓手机刷机失败的原因有哪些?安卓刷机失败原因汇总...

    经常使用安卓手机的朋友都知道,当手机使用时间长了之后,多开几个程序便会出现手机卡顿的情况,目前解决这一现象比较好的办法就是刷机,当然刷机是有风险的,如果操作失误就可能会导致手机变砖,为了防止刷机新手在 ...

  7. android 动态摄像头权限,Android判断用户是否允许了摄像头权限实例代码

    如题,既然是判断用户是否允许了摄像头权限,那么,咱们就忽略是Manifest配置的问题,因为这是开发者的事. 用户在使用APP时,如果首次进入用摄像头的地方,手机会提示是否允许该应用使用摄像头.有些用 ...

  8. 如何通过手机客户端Android、Iphone 等访问要求使用客户端证书SSL加密的https网站...

    我们在开发手机网站时,对于企业如何想发布加密的只给特定手机访问的网站,那么必须要使用"SSL的客户端证书", 是不是所有的手机系统都对SSL 客户端证书支持得很好呢?我们看看如何使 ...

  9. android 自定义相册选择,Android通过手机拍照或从本地相册选取图片设置头像

    像微信.QQ.微博等社交类的APP,通常都有设置头像的功能,设置头像通常有两种方式: 1.让用户通过选择本地相册之类的图片库中已有的图像,裁剪后作为头像. 2.让用户启动手机的相机拍照,拍完照片后裁剪 ...

  10. android怎么升级版本5.0,一加手机怎么升级安卓5.0系统

    谷歌今天正式发布了最新的安卓5.0正式版,作为一次非常大的系统升级,安卓5.0带来了非常多明显的升级,体验上相比安卓4.4要精进不少.在众多手机纷纷向Android 5.0发起冲击之时,一加手机官方论 ...

最新文章

  1. 【OpenCV 4开发详解】高斯滤波
  2. 干货分享|安全测试起航之旅
  3. shiro教程(2)- shiro介绍
  4. 多态的实现(重载,虚方法,抽象类,接口)
  5. 修改chrome的页面背景颜色
  6. Myeclipse的使用方法-添加,修改,删除JRE,修改项目中的jre不显示问题
  7. 《大西洋月刊》:在线能影响中国高等教育吗?
  8. 线程阻塞和挂起(网络收集)
  9. 简明Vim练级攻略(初学者)
  10. sql in里面可以放多少参数_如何从文本文件读入 SQL 参数
  11. bigdecimal 设置_BigDecimal 使用方法详解
  12. 东软软件动态生成对数据表更新操作的方法
  13. 如何用 Python 写 Excel 中 Vlookup 函数?
  14. P2P端口映射 UPnP功能和使用详解
  15. 用rsync备份一台linux服务器上的数据
  16. access视频教程百度网盘_Access数据库快速开发视频课程
  17. 江苏计算机编程中小学,编程教育走进小学低年级
  18. 华氏温度与摄氏温度转换 java_用JAVA写一个将华氏温度转换成摄氏温度的程序
  19. C语言链表之在指定结点前面或后面插入新的结点
  20. 用Multisim仿真对调幅波进行解调

热门文章

  1. C# 根据Combobox控件来动态显示TabControl下的子元素
  2. css3 文字走马灯,前端开发:css3实现文字首尾衔接跑马灯
  3. GD32 CANFD 仲裁区500K 数据区5M测试
  4. R语言筛选dataframe中某一日期之后的数据集、特定日期之后的数据行
  5. matlab 数据混合运算,C++中混合运算的类型转换
  6. 通过微信小程序的云开发实现留言功能
  7. 对象存储和块存储的区别
  8. 【技术美术图形部分】图形渲染管线1.0-基本概念CPU负责的应用阶段
  9. 怎么把视频导出为GIF?一分钟教你视频转gif在线转换
  10. windows11 升级安装错误 - 0x80073701