12.UiAutomator 获取系统信息
一、Build构建信息
1.build类:
Build类提供了硬件厂商、编号、序列号、SDK版本等重要信息。
类名:android.os.Build
常量名 |
说明 |
BOARD | 底层板名称 |
BOOTLOADER | Bootloader版本号 |
BRAND | 品牌 |
CPU_ABI | CPU指令集 |
CPU_ABI2 | CPU第二指令集 |
DEVICE | 工业设计名称 |
DISPLAY | 显示给用户的构建ID字符串 |
FINGERPRINT | 构建的唯一标识符 |
HARDWARE | 硬件的名称 比如高通 |
HOST | 主机 |
ID | ID标签 |
MANUFACTURER | 产品生产商 |
MODEL | 手机型号 |
PRODUCT | 产品名称 |
RADIO | 无线电固件版本号 |
SERIAL | 硬件序列号(如果可用) |
TAGS | 逗号分隔标签描述构建,如”调试” |
TIME | 出场时间 |
TYPE | 构建类型 |
USER | 构建用户名称 |
2.Build.VERSION类
Build.VERSION类提供了开发代号、内部版本、SDK版本等信息
类名:android.os.Build.VEISION
常量名 |
说明 |
CODENAME | 当前的开发代号 |
INCREMENTAL | 使用的内部值表示这个构建底层的源代码控制 |
RELEASE | 用户可见版本字符串 |
SDK_INT | 用户可见的SDK版本的框架 |
3.Build.VERSION_CODES类
android.os.Build.VERSION_CODES枚举当前已知的SDK版本代号
常量名 |
说明 |
BASE | 2008-10:第一个版本的android |
BASE_1_1 | 2009-02:第一个安卓更新,官方称为1.1 |
CUPCAKE | 2009-05:android1.5 |
CUR_DEVELOPMENT | 发展过程中构建的版本,但是未正式发布 |
DONUT | 2009-09:android1.6 |
ECLAIR | 2009-11:android2.0 |
ECLAIR_0_1 | 2009-12:android2.0.1 |
ECLAIR_MR1 | 2010-01:android2.1 |
FROYO | 2010-06:android2.2 |
GINGERBREAD | 2010-11:android2.3 |
GINGERBREAD_MR1 | 2011-02:android2.3.3 |
HONEYCOMB | 2011-02:android3.0 |
HONEYCOMB_MR1 | 2011-05:android3.1 |
HONEYCOMB_MR2 | 2011-06:android3.2 |
ICE_CREAM_SANDWICH | 2011-10:android4.0 |
ICE_CREAM_SANDWICH_MR1 | 2011-12android4.0.3 |
JELLY_BEAN | 2012-06:android4.1 |
JELLY_BEAN_MR1 | android4.2 |
JELLY_BEAN_MR2 | android4.3 |
KITKAT | android4.4 |
4.实例演示:
public void testDemo1(){//Build类System.out.println("Build:"+Build.BOARD);System.out.println("Build:"+Build.BOOTLOADER);System.out.println("Build:"+Build.CPU_ABI);System.out.println("Build:"+Build.CPU_ABI2);System.out.println("Build:"+Build.DEVICE);System.out.println("Build:"+Build.DISPLAY);System.out.println("Build:"+Build.FINGERPRINT);System.out.println("Build:"+Build.HARDWARE);System.out.println("Build:"+Build.HOST);System.out.println("Build:"+Build.ID);System.out.println("Build:"+Build.MANUFACTURER);System.out.println("Build:"+Build.MODEL);System.out.println("Build:"+Build.PRODUCT);System.out.println("Build:"+Build.RADIO);System.out.println("Build:"+Build.SERIAL);System.out.println("Build:"+Build.TAGS);System.out.println("Build:"+Build.TIME);System.out.println("Build:"+Build.TYPE);System.out.println("Build:"+Build.USER);System.out.println("Build:"+Build.BOARD);//Build.VERSION类System.out.println("Build.VERSION:"+Build.VERSION.CODENAME);System.out.println("Build.VERSION:"+Build.VERSION.INCREMENTAL);System.out.println("Build.VERSION:"+Build.VERSION.RELEASE);System.out.println("Build.VERSION:"+Build.VERSION.SDK_INT);//Build.VERSION_CODES类System.out.println("Build.VERSION_CODES:"+Build.VERSION_CODES.BASE);System.out.println("Build.VERSION_CODES:"+Build.VERSION_CODES.BASE_1_1);System.out.println("Build.VERSION_CODES:"+Build.VERSION_CODES.CUPCAKE);System.out.println("Build.VERSION_CODES:"+Build.VERSION_CODES.CUR_DEVELOPMENT);System.out.println("Build.VERSION_CODES:"+Build.VERSION_CODES.ECLAIR);System.out.println("Build.VERSION_CODES:"+Build.VERSION_CODES.ECLAIR_0_1);System.out.println("Build.VERSION_CODES:"+Build.VERSION_CODES.ECLAIR_MR1);System.out.println("Build.VERSION_CODES:"+Build.VERSION_CODES.FROYO);System.out.println("Build.VERSION_CODES:"+Build.VERSION_CODES.GINGERBREAD);System.out.println("Build.VERSION_CODES:"+Build.VERSION_CODES.GINGERBREAD_MR1);System.out.println("Build.VERSION_CODES:"+Build.VERSION_CODES.HONEYCOMB);System.out.println("Build.VERSION_CODES:"+Build.VERSION_CODES.HONEYCOMB_MR1);System.out.println("Build.VERSION_CODES:"+Build.VERSION_CODES.HONEYCOMB_MR2);System.out.println("Build.VERSION_CODES:"+Build.VERSION_CODES.ICE_CREAM_SANDWICH);System.out.println("Build.VERSION_CODES:"+Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1);System.out.println("Build.VERSION_CODES:"+Build.VERSION_CODES.JELLY_BEAN);System.out.println("Build.VERSION_CODES:"+Build.VERSION_CODES.JELLY_BEAN_MR1);System.out.println("Build.VERSION_CODES:"+Build.VERSION_CODES.JELLY_BEAN_MR2); }
2)通过判定手机SDK级别来使用API
public void testDemo2() throws UiObjectNotFoundException{//获取SDK版本号int sdk=Build.VERSION.SDK_INT;//进行判断if (sdk>=18){//改一下键盘输入默认时间Configurator.getInstance().setKeyInjectionDelay(100);}//用例操作UiObject editText=new UiObject(new UiSelector().className(EditText.class.getName()));editText.setText("10086"); }
二、Environment环境变量
Environment类提供了一些常用的Android环境变量的访问和获取:
典型的文件目录,如:root目录、data目录、外部SD卡目录等
SD卡状态检测,帮助了解外部存储设备的状态信息
API |
说明 |
getDataDiretory() | 获取数据目录 |
getDownloadCacheDirectory() | 获取下载缓存目录 |
getExternalStorageDirectory() | 获取外部存储目录 |
getExternalStoragePublicDirectory(String type) | 获取特定类型的目录 |
getExternalStorageState() | 获取外部存储状态 |
getRootDirectory() | 获取Root目录 |
getStorageState(File path) | 返回给定目录的存储状态 |
isExternalStorageEmulated() | 检查是否有外部存储设备模拟 |
isExternalStorageRemovable() | 检查外部存储设备是否可以移除 |
- 示例:
public void testDemo1(){//输出指定目录System.out.println("------指定目录------");System.out.println(Environment.getDataDirectory());//数据目录System.out.println(Environment.getDownloadCacheDirectory());//下载缓存目录System.out.println(Environment.getExternalStorageDirectory());//外部存储目录System.out.println(Environment.getRootDirectory());//Root目录//输出特定目录System.out.println("------特定目录------");System.out.println(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_ALARMS));System.out.println(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM));System.out.println(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS));System.out.println(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES));System.out.println(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC));System.out.println(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_NOTIFICATIONS));System.out.println(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES));System.out.println(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PODCASTS));System.out.println(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_RINGTONES));//列出下载目录下的文件System.out.println("------下载目录下的文件------");File downloadFile=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);File[] file=downloadFile.listFiles();for(File f:file){System.out.println(f.getAbsolutePath());} }
三、getprop命令获取系统属性
1.系统属性
除了build类可提取系统属性外,使用命令getprop可以列出所有的系统属性,除了原生系统定义外,厂商定义的属性也会全部列出。
存放系统属性的文件位置如下:
/defalt.prop /system/build.prop /data/property 下的4个prop文件
- 获取的系统属性非常多,对其进行简单分类
1)dalvik.vm→ 虚拟机内存分配情况
2)dhcp → 局域网参数信息
3)gsm → GSM信息
4)init → 守护进程信息
5)net → 网络信息
6)persist → 系统常驻
7)ro → 一些系统只读属性
8)wifi → wifi相关信息
8)其他厂商自定义的属性
2.常用属性举例说明
系统属性 | KEY |
硬件平台 | ro.board.platform |
SN号 | ro.boot.serialno |
系统android版本号 | ro.build.version.release |
SDK级别 | ro.build.bersion.sdk |
手机当前运营商信息 | gsm.operator.alpha |
系统版本 | ro.build.version.inscremental |
手机制造商信息 | ro.product.manufacturer |
手机型号 | ro.product.model |
手机名子 | ro.product.name |
系统语言 | ro.product.local.language |
- 实例:
public class buildTestcase extends UiAutomatorTestCase{//快速调试public static void main(String [] args){new UiAutomatorHelper("test","Jian.demo.buildTestcase","testDemo1","2");}//用例public void testDemo1(){//调用设定的方法,传入key输出键值System.out.println("硬件平台:"+getProp("ro.board.platform"));System.out.println("SN号:"+getProp("ro.boot.serialno"));System.out.println("系统android版本号:"+getProp("ro.build.version.release"));System.out.println("SDK级别:"+getProp("ro.build.bersion.sdk"));System.out.println("手机当前运营商信息:"+getProp("gsm.operator.alpha"));System.out.println("系统版本:"+getProp("ro.build.version.inscremental"));System.out.println("手机制造商信息:"+getProp("ro.product.manufacturer"));System.out.println("手机型号:"+getProp("ro.product.model"));System.out.println("手机名子:"+getProp("ro.product.name"));System.out.println("系统语言:"+getProp("ro.product.local.language"));}//解析系统属性的方法public String getProp(String key){try{//命令窗口输入命令Process p=Runtime.getRuntime().exec("getprop");//从命令中提取的输入流InputStream in=p.getInputStream();InputStreamReader reader=new InputStreamReader(in);BufferedReader buff=new BufferedReader(reader);//逐行读取并输出String line="";while((line=buff.readLine())!=null){if(line.contains("["+key+"]")){String[] s=line.split("\\[");//调试用的 // for(String ss:s){ // System.out.println("**:"+ss); // }//返回值return s[2].replaceAll("\\].*", "");}}}catch(IOException e){e.printStackTrace();}//如果没取到就返回这个return "未找到对应KEY";} }
转载于:https://www.cnblogs.com/JianXu/p/5225287.html
12.UiAutomator 获取系统信息相关推荐
- 跨平台 获取系统信息的python库 http://support.hyperic.com/disp
跨平台 获取系统信息的python库 http://support.hyperic.com/disp - 张沈鹏,在路上... - ITeye技术网站 跨平台 获取系统信息的python库 http: ...
- Kettle使用_8 存储过程结合获取系统信息
Kettle使用_8 存储过程结合获取系统信息 需求: 通过传递给kettle位置参数的方式执行存储过程.其中存储过程的需求是往tb_user(字段user_id, name)里插入一条记录(覆盖式, ...
- Kettle使用_3变量替换之获取系统信息与命名参数
需求:SQL里定义动态的变量并能替换变量的值后将数据导入到文本文件中 解决方法:通过获取系统信息组件和SQL替换变量的参数来完成该功能 注: 可结合如下链接一起阅读: Kettle使用_29 转换里使 ...
- ansible获取linux信息,ansible 获取系统信息的一些范例,ansible系统信息
ansible 获取系统信息的一些范例,ansible系统信息 主机名:echo `ansible 193.168.120.101 -m setup -a "filter=ansible_h ...
- Golang实践录:获取系统信息
本文介绍获取系统信息的方法,另外给出根据不同系统编译的方法. 问题提出 由于多年来接触了不同系统的兼容工程,对使用宏区分不同的代码一直有一种莫名的感觉.像 Linux 内核中就有很多这样的代码,cor ...
- Java 获取系统信息
Java 获取系统信息可以用以下方法: public class testsysteminfo {public static void main(String[] args) {// TODO Aut ...
- java获取系统信息:java的信息、操作系统的信息、用户的信息、虚拟机的信息、系统设置的信息。
全栈工程师开发手册 (作者:栾鹏) java教程全解 java获取系统信息:java的信息.操作系统的信息.用户的信息.虚拟机的信息.系统设置的信息. package com.lp.app.windo ...
- 小程序开发API之获取系统信息wx.getSystemInfo()、wx.getSystemInfoSync()
wx.getSystemInfo() 获取系统信息 函数参数: 返回值: 例如: 写法一 index.js /*brand 设备品牌 model 设备型号pixelRatio 设备像素比screenW ...
- uniapp微信小程序怎样获取宽高?获取系统信息?微信小程序 获取用户手机屏幕高度与宽度信息等
第一种方案(推荐) "vw" = "view width" "vh" = "view height" 使用 CSS3 引 ...
最新文章
- 机器学习中的优化方法小结
- Luhn(卢恩)算法,检测信用卡号的合法性
- Linq之Expression高级篇(常用表达式类型)
- 获取Table选中行数据(Table篇二)
- 修改sga后oracle打不开的解决方法
- java 权限url权限_SpringBootSecurity学习(11)网页版登录之URL动态权限
- 在ASP.NET中防止注入攻击[翻译]
- php的 静态变量,PHP之static静态变量详解
- pytorch梯度的计算过程
- Coinbase报告:DeFi协议总锁仓价值已超250亿美元,同比增长2500%
- 利用Bootstrap Paginator插件和KnockoutJS完成分页功能
- 扁平化设计(Flat Design)
- leetcode 717. 1比特与2比特字符(python)
- FineUI学习笔记1
- 腾讯云 linux pptpd 搭建 和遇到的部分问题解决
- UE4开发三:创建游戏模式、角色、控制器
- WPF 设置属性“System.Windows.FrameworkElement.Style”时引发了异常
- HttpClient在多线程环境下踩坑总结
- 计算机保研面试基础知识,华科计算机保研复试机试题目
- 【商迪3D】详谈3d物联网工业数字可视化三维仿真技术解决方案
热门文章
- c 实现走迷宫流程图_c语言迷宫问题程序功能介绍.设计思路.数据结构设计及用法说明程序结构(流程图).各模块的功能及程序说明....
- php验证旧密码,PHP最佳实践之过滤、验证、转义和密码
- c向文件中插入数据_如何把数据写入顺序文件中,VBA代码中Write#语句的利用
- java调用 restapi 乱码_Java HttpURLConnection模拟请求Rest接口解决中文乱码问题
- 华为开启管理员模式_又一年的心动模式开启,华为nova8系列8号色撩人肺腑
- Oracle 数据怎么实时同步到 MySQL | 亲测干货分享建议收藏
- postgre管理员 无法访问表_postgresql – 授予用户对所有表的访问权限
- python3线程池爬虫_python3爬虫中多线程的优势总结
- cockroachdb mysql_CockroachDB学习笔记——[译]CockroachDB中的SQL:映射表中数据到键值存储...
- java中isolate时间_Java HikariDataSource.setIdleTimeout方法代码示例