Android 获取机型设备信息

获取Android机型设备信息的适配差异问题

本文主要参考:
http://wyhuan.github.io/2016/01/25/%E3%80%90%E6%96%87%E4%BB%B6%E7%B1%BB%E3%80%91%E8%8E%B7%E5%8F%96Android%E6%9C%BA%E5%9E%8B%E8%AE%BE%E5%A4%87%E4%BF%A1%E6%81%AF%E7%9A%84%E9%80%82%E9%85%8D%E5%B7%AE%E5%BC%82%E9%97%AE%E9%A2%98/

作为Android开发者,当你需要将产品在某某品牌的某某机型上进行兼容性适配的时候,最为基础的适配方法是通过代码层面区分适配机型来为程序进行针对性的改变程序执行流向。

例如

这里写图片描述

  1. Build类包含的信息
    这里写图片描述
    主要读取的是手机系统\system\build.prop(Galaxy Nexus为例)

这里写图片描述
2. 部分已知适配问题
由于Android系统的开放性,各大OEM厂商会以Android为基础为手机开发自己的ROM,上面的程序片段通过判断厂商和机型的方式来进行代码层面的适配,理论上这里不会有问题发生,但实际上获取厂商信息和机型信息的时候会出现你想像不到情况发生:

情况一:厂商信息获取不唯一
摩托罗拉的厂商信息不仅是”motorola”还有”mot”和”FIH”;
索爱的厂商信息不仅是”Sony”还有”Sony Ericsson”;
HTC的厂商信息不仅是”HTC”还有”HUN”;
OPPO的厂商信息不仅是”OPPO”还有”alps”;
酷派的厂商信息不仅是”CoolPad”还有”YuLong”;
…..
情况二:机型信息获取比较奇葩
红米model值为数字,model值为“2013022”的奇葩字符串。
…..
情况三:厂商信息或机型信息获取为unknown
联想A60获取厂商信息为unknown;造成这种问题的原因是厂商随意改动framework层导致的。
3. 适配建议
根据以上情况希望可以为Android开发者同学在适配工作中提供一定的借鉴和帮助。
我们给出的第一种解决方案是“规避已知问题”。例如,厂商信息不唯一时,我们就搜罗该厂商信息的所有可能,从而进行准确的判断,如下:
这里写图片描述
当获取机型信息为unknown时,我们还可以通过手机设备的其他信息来判断手机具体机型,如下:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值