很多时候我们需要知道用户当前使用的是什么系统,甚至是系统的版本号(比如MIUI V7、V8)来进一步处理业务逻辑,比如打开系统权限设置界面。

感谢国内各大Android手机/系统生产商,让我们这些Android开发者每天都乐(伤)此(心)不(欲)疲(绝)的解决这些差异化问题。

1. 通过设备制造商判断

通过读取android.os.Build.MANUFACTURER常量来获取设备的制造商从而确定设备所使用的系统。

常用MANUFACTURER常量对应关系

仅供参照:不排除个别厂家有作更改

华为-huawei

魅族-meizu

小米-xiaomi

oppo-oppo

vivo-vivo

三星-samsung

锤子-smartisan

LG-lg

乐视-letv

中兴-zte

酷派-yulong

联想-lenovo

索尼-sony

使用示例:

//为了更好的判断,最好是将两者比较的对象都转换为大写或者小写再进行比较

val mark = Build.MANUFACTURER.toLowerCase()

if (mark.contains("huawei")) {//预防起见使用contains而不使用equals

//这是华为设备

}

总结:此方法通常有效,因为我们通常认为小米的手机使用MIUI系统,华为的手机使用EMUI系统等这种关联关系,那么就可能存在以下情况:

如果使用华为的手机刷小米的系统,这种得到的结果可能不准确。

未知设备制造商X使用未知Y系统,这种可能会导致无法穷觉有多少种情况,但可能我们也不关心这种情况,也许我们只关系国内比较有名气的那几家设备和系统生产商,比如小米、华为等,其它未知情况均可视为原生系统

当然如果还想获取系统的版本号,可能这个方法就有点无力回天了。

2. 通过build.prop的内容判断

在Android系统中有一个类似Windows系统注册表的文件build.prop。这个文件内定义了系统初始(或永久)的一些参数属性、功能的开放等。

因此我们可以通过在文件内容中查找一些特征标识从而确定系统类别。

在对build.prop进一步了解的过程中,找到了别人对这一部分的具体使用和讲解,这里就不再过多阐述。

别人的使用讲解

别人封装好的工具类

总结:此方法通常更为有效(取决于特征标识的有效性),但比方法1略复杂一些。但是此方法可能存在一个致命的问题就是可能在某些设备上你无法读取build.prop文件,据网上资料显示(华为mate10 及后续的一些新设备无法读取此文件)。

对于以上两种方法,方式不同,也都存在各自的短板,因此在实际生产环境中最好是根据自己的需求而定,甚至是结合两者方法的特点来实现需求,到目前为止并没有找到其它更为行之有效能够适应所有情况的获取系统类型和版本的方法,如果有,谢天谢地请您告诉我,不胜感激。

附录:

小米开发文档-如何识别小米设备/MIUI系统,关于开发文档中提到的读取属性,应该是使用SystemUtil.java实现

android最新固件版本,Android获取系统(ROM)类别及版本号相关推荐

  1. android 判断华为系统版本号,Android获取系统(ROM)类别及版本号

    很多时候我们需要知道用户当前使用的是什么系统,甚至是系统的版本号(比如MIUI V7.V8)来进一步处理业务逻辑,比如打开系统权限设置界面. 感谢国内各大Android手机/系统生产商,让我们这些An ...

  2. Android Studio 基础 之 获取系统Calendar 日历日程(可获得当天以后可设定天数范围内的日历日程) (涉及指定日期时间判断是星期几的方法使用)的方法整理

    Android Studio 基础 之 获取系统Calendar 日历日程(可获得当天以后可设定天数范围内的日历日程) (涉及指定日期时间判断是星期几的方法使用)的方法整理 目录 Android St ...

  3. 日历 android 周历,Android Studio 基础 之 获取系统Calendar 日历日程 (涉及指定日期时间判断是星期几的方法使用)的方法整理...

    Android Studio 基础 之 获取系统Calendar 日历日程 (涉及指定日期时间判断是星期几的方法使用)的方法整理 目录 Android Studio 基础 之 获取系统Calendar ...

  4. Android如何通过shareduserid获取系统权限

    2019独角兽企业重金招聘Python工程师标准>>> android会为每个apk进程分配一个单独的空间(比如只能访问/data/data/自己包名下面的文件),一般情况下apk之 ...

  5. Android 使用Calendar类获取系统时间

    Android 获取系统时间: 1.定义变量 private int mYear;private int mMonth;private int mDay;private int mHour;priva ...

  6. oppor15x手机android版本,OPPO R15X官方原版最新全量版系统rom刷机包升级包A.09版

    OPPO R15X手机的官方原版系统包在之前也是说了多个版本了,有的机友已经下载升级了,不过今天最新的固件包也是更新了,现在最新的固件包是这具A.09版本的,也是官网刚刚发布的了,在这里分享出来也是方 ...

  7. Android adb 设置和获取系统属性

    /system/build.prop 为系统属性默认值. 安卓系统属性由特殊的property_service管理, /system/build.prop是只读文件, 其中包含property_ser ...

  8. android 最新 support,android support v7 下载-android support.v7包 官方最新版 - 河东下载站...

    android support v7是一款功能非常实用的android在进行开发的过程中,必须要进行使用的一个包:这款软件作为一个功能非常全面的功能包,也是目前为止最新的功能包,是您这使用Androi ...

  9. android最新设计规范,Android应用未来的设计规范

    谷歌在2014 I/O大会上不但发布了Android L,还一同推出了全新的Material Design设计语言,它被认为是未来Android系统和应用的设计方向.虽然Android L和谷歌自家的 ...

  10. android 最新 九宫格,Android开发中怎么显示一个九宫格图片

    Android开发中怎么显示一个九宫格图片 发布时间:2020-11-21 15:09:33 来源:亿速云 阅读:86 作者:Leah 本篇文章给大家分享的是有关Android开发中怎么显示一个九宫格 ...

最新文章

  1. 1470篇!CVPR2020结果出炉(附13篇论文链接/开源代码/解读)
  2. Solr中Field常用属性
  3. 2018 青岛网络赛C题Halting Problem
  4. Passwordless SSH Login
  5. [Redux/Mobx] 在React中你是怎么对异步方案进行选型的?
  6. 国科大高级人工智能5-RNN/LSTM/GRU/集束搜索/attention
  7. 自注意力机制_与SENet互补提升,华为诺亚提出自注意力新机制:Weight ExcitationECCV2020...
  8. sql server序列_SQL Server中的Microsoft时间序列
  9. 什么是交叉编译?个人对交叉编译的理解
  10. oraccle 索引管理
  11. vulkan 利用GPU加速ENet
  12. c语言入门经典必备代码
  13. 新翔绩效考核系统 v2022
  14. java编码规范试题_java编码规范考试题答案完整版.doc
  15. android之在java代码引用res资源
  16. MC34063升压芯片——5V转12V、-12V仿真与实物制作
  17. 数据库索引选择的探索(二)之直方图
  18. Linux 3g上网卡 拨号,Linux 系统 CDMA 无线上网卡拨号过程
  19. pymol Windows安装
  20. 【图解CAN总线】-8-CANFD总线网络“负载率”计算

热门文章

  1. 解析ICMAX国产存储芯片eMMC和UFS的区别
  2. 如何学习平面设计,需要学习哪些软件?
  3. 2015-2016 ACM-ICPC, NEERC, Moscow Subregional Contest G题: Garden Gathering [线段树/最小曼哈顿距离生成树]
  4. granite crushers in german
  5. 跳槽吗?4月7日18点6大细分领域4家优质名企招聘情报来了
  6. 施努卡:机器视觉尺寸检测(机器视觉表面缺陷检测)
  7. webstorm官网中文破解版(转自http://blog.csdn.net/vchen_hao/article/details/77248053)
  8. How to cover an IE windowed control (Select Box, ActiveX Object, etc.) with a DHTML layer.
  9. atan java_Java atan()方法
  10. Ubuntu Server 20.04 下 HustOJ 安装