首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >adb shell 查看系统属性(用来判断特殊的操作系统)

adb shell 查看系统属性(用来判断特殊的操作系统)

作者头像
用户1155943
发布于 2018-01-04 07:25:45
发布于 2018-01-04 07:25:45
2.9K00
代码可运行
举报
文章被收录于专栏:Android点滴积累Android点滴积累
运行总次数:0
代码可运行

一般来讲,在android程序开发中进行需要判断设备类型和系统版本

1、设备类型判断(android.os.Build.MODEL)

比如判断属于Google Nexus 5,Nexus 7,MIUI v5, MIUI v6,三星设备,魅族设备等;

这类型的问题都使用的android.os.Build.MODEL来判断,android.os.Build.MODEL是一个String变量,可以根据String中一些特殊字段来判断android设备属于什么设备,比如判断Nexus 7,代码入下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static boolean isN7() {
    return "Nexus 7".equals(android.os.Build.MODEL);
}

所以平时开发过程中如果不知道一个设备的MODEL值,写个测试程序输出android.os.Build.MODEL值,然后再将该值用到我么的程序中参与判断。

2、系统版本判断(api版本-android.os.Build.VERSION.SDK_INT)

比如判断系统是属于2.3, 3.0, 4.4, 5.0 等,这种属性判断使用的是系统的android.os.Build.VERSION.SDK_INT变量。

最常用的场景是用来判断一些系统函数的api版本,比如有些方法只有高版本的api才有,低版本上使用会导致程序崩溃。

但是还有一种场景导致还要第三种方法才能搞定

使用场景:现在操作系统大多是开源的,默认是google 的android系统,但是别忘了还有魅族的Flyme OS 和小米的 Miui,它们是android的变种。如果用非小米手机也装上了miui,后者是非魅族手机装上了魅族的Flyme OS,这种情况怎么判断呢。拿魅族来说:显然这个时候不能用判断设备类型的方式,因为非魅族设备安装了魅族系统。所以这个时候只能判断这个操作系统是魅族的Flyme OS,它的操作系统应该具备一些它自己的特性,所以只要找到一个唯一的特性就可以解决上面的问题了。

3、判断特殊的操作系统---获取系统属性加以研究(魅族为例)

进入adb shell,获取魅族系统属性:

  • 首先进入cmd,然后输入adb shell 命令进入adb shell (前提:adb必须要配置到系统环境变量中)

     C:\Users\Administrator>adb shell      shell@mx4pro:/ $

  • 进入system目录

     shell@mx4pro:/ $ cd system      cd system      shell@mx4pro:/system $

  • 查看系统属性

     shell@mx4pro:/system $ cat build.prop      cat build.prop      # begin build properties      # autogenerated by buildinfo.sh      ro.build.cta=noncta      ro.build.id=KTU84P      ro.build.mask.id=4.4.4-1423716396_wo      ro.build.args=      ro.build.inside.id=4.4.4-20150212124636 ro.build.version.incremental=m76.Flyme_OS_4.2.2.1.20150212124636      ro.build.version.sdk=19      ro.build.version.codename=REL      ro.build.version.release=4.4.4

.....还有很多

  • 筛选包含Flyme字符的属性,因为既然是魅族操作系统,Flyme这个词最能代表它的属性

     shell@mx4pro:/system $ cat build.prop | grep Flyme      cat build.prop | grep Flyme

ro.build.version.incremental=m76.Flyme_OS_4.2.2.1.20150212124636 ro.build.display.id=Flyme OS 4.2.2.1U ro.build.description=meizu_mx4pro-user 4.4.4 KTU84P m76.Flyme_OS_4.2.2.1.2015021      2124636 release-keys ro.build.fingerprint=Meizu/meizu_mx4pro/mx4pro:4.4.4/KTU84P/m76.Flyme_OS_4.2.2.1      .20150212124636:user/release-keys      shell@mx4pro:/system $

帅选到四个属性:ro.build.version.incremental   ro.build.display.id   ro.build.description    ro.build.fingerprint

  • 换一个其他的安装有魅族操作系统设备,重复上面的步骤。最终会发现 ro.build.display.id这个属性可以当做一个魅族操作系统唯一的特性(因为这个属性值几乎都会包含Flyme字段,这正是我们想要的)。我们就可以用这个属性来与其他系统进行区分。
  • 最后一步,当然是怎么取出这个属性值了。

4、通过反射调用获取系统属性

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 判断是魅族操作系统
public static boolean isMeizuFlymeOS() {
      return getMeizuFlymeOSFlag().toLowerCase().contains("flyme");
}
 
/**
 * 获取魅族系统操作版本标识
 */
public static String getMeizuFlymeOSFlag() {
      return getSystemProperty("ro.build.display.id", "");
}
 
private static String getSystemProperty(String key, String defaultValue) {
        try {
                Class<?> clz = Class.forName("android.os.SystemProperties");
                Method get = clz.getMethod("get", String.class, String.class);
                return (String)get.invoke(clz, key, defaultValue);
        } catch (Exception e) {
        }
        return defaultValue;
}

// 下面是小米操作系统的一些相关方法
/**
 * 获取MIUI版本名
 */
public static String getMIUIVersionName() {
        return getSystemProperty("ro.miui.ui.version.name", null);
}
 
// MIUI v5版本
public static boolean isV5(){
        if("V5".equalsIgnoreCase(getMIUIVersionName())){
                return true;
        }
        return false;
}

为了方便,封装一个反射调用系统SystemProperties类的工具类

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class SystemPropertiesReflect {
    public static String get(String key, String value) {
        try {
            Method method = Class.forName("android.os.SystemProperties")                    .getMethod("get", String.class, String.class);
            return (String) method.invoke(null, key, value);
        } catch (Exception e) {
        }
        return value;
    }
    
    public static long getLong(String key, long value) {
        try {
            Method method = Class.forName("android.os.SystemProperties")                    .getMethod("getLong", String.class, long.class);
            return (Long) method.invoke(null, key, value);
        } catch (Exception e) {
        }
        return value;
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-02-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
秒杀德云社!今晚魔都小伙伴的朋友圈,快把我笑死了...
最近上海的疫情,相信大家都有所了解吧。DD反正已经好多天都在家里办公了,具体几天我也不记得了... 就在今晚“上海发布”官宣:关于做好全市新一轮核酸筛查工作的通告。 在这个通告发布之后,DD的朋友圈炸了!今晚的朋友圈已经被买菜和各种段子占领了,差点把我笑死了。 趁没笑死之前,笑着给大家分享下今晚魔都小伙伴们的朋友圈。 第一波内容:一图看懂 第二波内容:味道来了 同时,还衍生出了各种浦西浦东为界的: 由于DD住青浦,这条段子也是把我整乐了。 我也顺手发了个朋友圈,于是跟多有意思的评论来了: 有提
程序猿DD
2022/03/28
3530
热议!携程创始人:年轻人没工作可先结婚生娃?
今天在群里(点击加群)看到有小伙伴分享了携程创始人梁建章的一段言论:年轻人如果暂时找不到工作,可以先去结婚生子。 该言论一出,就引发了众网友们的热议和嘲讽。 有网友评论:两个都没有工作的年轻人结婚了,吃什么?生了孩子,用什么养?两个年轻人如果长久没有工作,会不会百事哀? 有网友戏谑:结婚生子?然后一家三口讨饭? 其实,DD看到这篇报道的时候,还是有点不太相信的。 因为这个建议与其过往的言论有所冲突,比如2月22日发布的这条: 养育成本的国际比较:把一个孩子抚养到刚年满18岁所花的成本相对于人均GDP的倍
程序猿DD
2022/06/20
3340
热议!携程创始人:年轻人没工作可先结婚生娃?
应届生就业难?小微企业经营难?网友建议:大学生付费上班,两全其美...
近几个月,因为受疫情影响,很多小微企业受到了重挫。虽然这几天上海解封复工了,但在很多平台上,看到了一些让人悲伤的vlog,一些企业主到公司的一片狼藉,宣布破产倒闭。因为连续2个月疫情,很多小微企业的资金链断裂,让企业主和劳动者都面临困难。与此同时,还有一大批应届毕业生需要走向社会,小微企业的倒闭也丢失了很多岗位的需求,这让应届生的就业也成了难题。 近日,有微博网友发表观点:可以让大学生付费上班,企业加强培训,员工付费获得经验,物超所值。这样企业就有现金流渡过难关,大学生也都就业了。两全其美。 随后,又有一
程序猿DD
2022/06/07
3530
应届生就业难?小微企业经营难?网友建议:大学生付费上班,两全其美...
被315曝光还霸气回应“不受影响”,这家SaaS公司是真硬气还是无底线?
你去年吃的老坛酸菜面吐出来了吗?这次315的曝光是不是很酸爽? 几个食品问题这几天被爆料很多了,我就不说了。今天跟大家聊聊这次315曝光的一家做SaaS的软件公司,可能这东西大家平时不会直接接触到,所以关注度很一般。但如果你看到这家公司的后续采访,我觉得你应该关注一下。因为这家在被315曝光后,还霸气回应“曝光打击不大,合作没影响”。 为什么这家公司可以如此硬气呢?是真硬气,还是没底线呢?下面详细聊聊! 公司做啥? 从该公司官网的产品介绍中,我们可以大致了解这家公司具体主要是提供企业级的营销、销售等运营相关
程序猿DD
2022/03/18
3960
“裁员” + 滤镜 = “毕业”
前段时间网友爆了几家互联网公司大规模裁员的消息,大家都很关注。 最近DD又在群里(点击加群)看到有小伙伴分享了下面这样两张关于“毕业”的通知。 从内容上来看,其实这里的毕业与我们日常所认识的不同,实际上就是“裁员”。 面对如今复杂的国际局势和紧张的国内疫情,各大互联网公司也面临着很多困难和挑战,裁撤一些不赚钱的业务板块,取消一些实验性的项目都是比较常见的正常操作。而最终反应到我们个人头上的体现就是裁员。 不管什么时候,裁员都是残酷的。虽然有网友说,把裁员美化成毕业,多了一些温情。但在DD看来其实没这个必
程序猿DD
2022/03/30
4400
悲剧!昨天DD分享的小知识翻车了...
昨天分享了一个在IDEA中使用Jump To Line插件实现跳转到任意行的的小技巧。 很不幸,发布没多久,就“翻车”了! 不过这次翻车并不尴尬,反而还挺开心,因为DD也Get到新技能了! 到底哪里翻车了呢?看看下面这个留言: 这位小伙伴提示,点击行号试试,于是DD就试了一下,果然是可以的! 于是,DD就果断卸载了昨天分享的Jump To Line插件,真的非常感谢这位朋友的分享。同时,借这次的分享“翻车”事件,再跟大家聊聊知识分享这个事情。 我认为分享不光是对自己知识的总结,也是与读者的交流,你可以通过
程序猿DD
2022/04/08
2740
悲剧!昨天DD分享的小知识翻车了...
GitHub CEO发文:严格限制俄罗斯获取侵略性军事能力所需要的技术
前几天,在微信群(点击加群)里就有小伙伴发了一些关于GitHub将限制俄罗斯开发人员使用开源软件的消息,引起程序员圈子的热烈讨论。 就在不久前,GitHub CEO在官方博客发文阐述了对乌克兰战争的回应。 Thomas Dohmke表示:GitHub与乌克兰人民和国际社会团结起来,谴责这些针对主权国家及其人民的可怕暴力行为,并会继续关注欧洲围绕俄罗斯非法军事入侵乌克兰的事件。同时,Thomas Dohmke也提到了自己在冷战期间的东德长大,现在的战争是其再也不想看到的事情。这对乌克兰的无辜人民来说是毁灭
程序猿DD
2022/03/04
4060
微软商店上架Windows&Office破解工具,并获5星好评?
大家好,我是DD! 最近真的除了俄乌冲突之外,其他消息似乎都被淹没了,连狗血的娱乐圈都哑火了。但昨天在微信群(点击加入)里的这张图引起了我的注意... 据群友称Windows应用商店上架了一个破解Windows的应用。 什么鬼?官方商店上架破解自己的软件?这是什么骚操作?该不会是骗人的吧? 当下就很想求证下,但苦于手头没有Windows电脑,只能等到晚上回家,DD拿出了祖传的Windows电脑,打开应用商店,还真的搜到了这款应用... 就是评分有所下降,没有之前的5分那么高了。很是好奇,有什么引起了网友
程序猿DD
2022/03/04
5600
Spring Cloud Alibaba 2021.0.1.0 发布:版本号再也不迷糊了
大家好,DD又来了! 3月9日,Spring官方博客发文:Spring Cloud Alibaba 2021.0.1.0发布了。 前段时间DD还在微信群(点击加入)里看到小伙伴吐槽Spring Cloud Alibaba更新太慢了。大概官方人员看到了?这不,最新版本来了! 这次发布的Spring Cloud Alibaba 2021.0.1.0版本基于Spring Boot 2.6.3和Spring Cloud 2021.0.1。要升级的小伙伴一定注意这个版本基线! 突然发现,官博这里还犯了个小错误,把Sp
程序猿DD
2022/03/14
9930
最新消息:Spring Cloud Gateway现高风险漏洞,建议采取措施加强防护
大家好,我是DD 3月1日,Spring官方博客发布了一篇关于Spring Cloud Gateway的CVE报告。 其中包含一个高风险漏洞和一个中风险漏洞,建议有使用Spring Cloud Gateway的用户及时升级版本到3.1.1+、3.0.7+或采用其他缓解方法加强安全防护。 有涉及的小伙伴可以看看下面具体这两个漏洞的内容和缓解方法。 CVE-2022-22947:代码注入漏洞 严重性:Critical 漏洞描述:使用Spring Cloud Gateway的应用程序在Actuator端点在启用、
程序猿DD
2022/03/04
8380
昨天的分享翻车了,一起复盘下!
昨天分享了 Java 17 新特性:文本块 ,后来有小伙伴提醒这个是JDK 14发布的 所以,DD又去查了一下这个功能的所属版本,其实是JDK 15。 但下载个JDK 14试试,貌似也可以,到底怎么回事呢? 来,DD带你一探文本块内容的演进过程: 如果还没不了解文本块的话,可以看看昨天发布的视频,直接了解这个新特性的如何使用: 欢迎关注我的视频号,持续分享编程小知识!当然了,如果觉得本文不错,欢迎点赞、在看、分享转化,支持一下! 我们创建了一个高质量的技术交流群,与优秀的人在一起,自己也会优秀起来,赶
程序猿DD
2022/05/05
2720
昨天的分享翻车了,一起复盘下!
开源项目因支持乌克兰遭issue刷屏,网友:怎么不支持伊拉克、阿富汗、叙利亚?
大家好,我是DD。 昨天,两条科技界的新闻炸了,一条是关于GitHub CEO发文:严格限制俄罗斯获取侵略性军事能力所需要的技术,一条是关于Oracle暂停俄罗斯所有业务。一个是全球最大的开源软件社区,一个是全球最大的数据库软件厂商。巨头们的举动,也开始带动其他科技公司排队加入了对俄罗斯的封锁。 就在昨天下午,微信群(点击加入)里也是盛传一些开源技术社区也宣布支持乌克兰,比如: Node.js 不过,今早DD看了一眼Node.js官网,已经撤下了相关文字。 除此之外,昨天曝光最多的应该就是拥有183K S
程序猿DD
2022/03/04
5880
IDEA Tips:Debug时如何优雅地制造异常?
抛异常相信大家都会吧?只需要这样就可以了: throw new RuntimeException("didispace.com"); 但是,在开发过程中有一些情况,我们需要测试程序对异常的处理逻辑是否正确,这个时候就需要我们在程序运行时主动的抛出异常才会触发相关逻辑来验证正确性,比较常见的场景有:事务是否会回滚、Web层的统一异常处理等等。 这个时候,你是如何去制造异常,来支持你的调试呢? 下面我就以前写的Spring Boot教程(https://blog.didispace.com/spring-bo
程序猿DD
2022/04/18
7250
IDEA Tips:Debug时如何优雅地制造异常?
英文文档读起来累?试试这个神器!
前段时间发了个关于《Spring支持PHP》的视频: 然后有小伙伴留言说:“你这个翻译好像很好用的样子”。 的确,我自己也觉得很好用。之前视频没看过的不知道是哪个,可以通过截图简单了解下: 基本操作就是选中要翻译的句子,直接按个快捷键,就出来了,并且可以同时产生多个不同翻译API的结果。 好了,废话不多说,下面具体介绍这个翻译软件! Bob 我在用的翻译软件是一个叫Bob的开源软件。 Bob 虽然有点丑 + 非主流,但真的挺好用的。但比较可惜的是目前主要就支持MacOS用户。 功能上基本覆盖常规需求了
程序猿DD
2022/04/13
3310
英文文档读起来累?试试这个神器!
离个职居然还用上了叫号机,差点以为在医院...
昨天下午的这条新闻,不知道大家有看到没: 关于裁员的消息,其实已经传了好几天了。前段时间,还把裁员称为“毕业“,被很多打工人吐槽。这次再看到图里的新闻消息还是有再一次被震惊到。 首先,DD震惊的是“取号办理”。啥意思?离职还要叫号系统吗?这么牛逼?人多到还得排队叫号了?开始我还是有点怀疑的,然后就去搜索了一下,于是看到了下面的照片,貌似好像还真有? 其次,DD震惊的是下午取号已经“排至1000多号”。也就是说当日至少有1000+人在办理离职?这个规模还是比较吓人的。 最近各大互联网厂商一起裁员,那么同行
程序猿DD
2022/04/06
3250
离个职居然还用上了叫号机,差点以为在医院...
网传的 Spring 大漏洞
昨天凌晨发了篇关于Spring大漏洞的推文,白天就有不少小伙伴问文章怎么删了。 主要是因为收到朋友提醒说可能发这个会违规(原因可参考:阿里云因发现Log4j2核弹级漏洞但未及时上报,被工信部处罚),所以就删除了。 原打算等这个漏洞公布之后,再群里给大家发相关修复信息的,但经过一天的时间,似乎这个事情变得有点看不懂了。所以今天继续聊聊这个网传的Spring大漏洞吧。 这个漏洞话题的起点源自3月29日晚,DD在群里(点击加群)看到网友分享了几位安全大佬爆料Java生态出现了超级大漏洞。 但两位大佬都没有透
程序猿DD
2022/03/31
3870
网传的 Spring 大漏洞
Java 18 新增@snipppet标签,注释中写样例代码更舒适了!
在这次的Java 18中,新增了一个@snipppet标签,主要用于JavaDoc中需要放示例代码的场景。其实在Java 18之前,已经有一个@code标签,可以用于在JavaDoc中编写小段的代码内容,比如在之前介绍Simple Web Serveropen视频中 提到的这段样例代码,就是用@code标签来写的:  * <p> Example of a simple file server:  * <pre>{@code  *    var addr = new InetSocketAddress(808
程序猿DD
2022/04/28
3190
Java 18 新增@snipppet标签,注释中写样例代码更舒适了!
抗原试剂盒也卷起来了,我的塑料袋不会影响房价吧?
昨天(4月3日),原来是要做核酸的。但临时取消了,改为抗原自检(就是自己捅的那种)。 为了避免交叉感染,所以现在都采用无接触的发放方式。比如下面这样,大家挂一个袋子在门口: 写好家里多少人,这样发放人员就知道要放多少人了。 于是,今天就在网上看到了各种有趣的接收盒。 是不是很精致,很有趣呢?你觉得这就完了? 后来DD看到网友传了一段聊天记录,又差点把我笑死。。。 什么?还能内卷?一起看看怎么个卷法... 都是各种大牌购物袋... 但这还好,下面这个我直接破防了... 更有趣是,
程序猿DD
2022/04/06
5390
抗原试剂盒也卷起来了,我的塑料袋不会影响房价吧?
带你体验 Java 新功能:自带的简易Web服务器
在今年3月下旬的时候,Java版本已经更新到了18。接下来DD计划持续做一个系列,主要更新从Java 9开始的各种更新内容,但我不全部都介绍,主要挑一些有意思的内容,以文章和视频的方式来给大家介绍和学习。 如果要第一时间获得内容更新,对文章形式感兴趣的小伙伴可以关注我的博客(https://blog.didispace.com)或者公众号(程序猿DD),对视频形式感兴趣的可以关注我的B站(https://space.bilibili.com/396803537)或视频号(程序猿DD)。 简单Web服务器 J
程序猿DD
2022/04/22
5360
带你体验 Java 新功能:自带的简易Web服务器
面对科技公司的制裁,俄罗斯放出封印7年的神兽:RuTracker
大家早上好,我是DD! 最近俄乌冲突引发的科技公司站队,Oracle、微软、三星等全球知名科技公司都开始对俄罗斯实施制裁与封锁。就连崇尚自由的开源社区GitHub也发文会严格限制俄罗斯获得维持其咄咄逼人的军事能力所需的技术。 面对来自西方世界的围攻,还在猜测俄罗斯接下来要怎么样的时候,没想到反击来的很快,刚刚在群里(点击加群)里就看到了一个消息,俄罗斯直接放了个出乎大家意料的大招!什么大招?下面一起看看! 有俄罗斯媒体称,自2015年开始,被封禁7年之久的资源站RuTracker解封,刚刚DD试了一下,还真
程序猿DD
2022/03/09
1.1K0
推荐阅读
相关推荐
秒杀德云社!今晚魔都小伙伴的朋友圈,快把我笑死了...
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档