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

本文介绍了两种方法在Android中判断设备制造商和系统版本,如通过`Build.MANUFACTURER`判断华为设备,以及通过分析`build.prop`文件获取更详细信息。然而,这些方法在特定情况下可能不准确,例如设备被刷入其他系统或无法读取`build.prop`。建议结合使用并根据具体需求选择合适的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

很多时候我们需要知道用户当前使用的是什么系统,甚至是系统的版本号(比如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实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值