十四、Android UiAutomator 获取系统信息

一、Build构建信息

1.build类:

Build类提供了硬件厂商、编号、序列号、SDK版本等重要信息。
类名:android.os.Build

常量名

说明

BOARD底层板名称
BOOTLOADERBootloader版本号
BRAND品牌
CPU_ABICPU指令集
CPU_ABI2CPU第二指令集
DEVICE工业设计名称
DISPLAY显示给用户的构建ID字符串
FINGERPRINT构建的唯一标识符
HARDWARE硬件的名称 比如高通
HOST主机
IDID标签
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版本代号

常量名

说明

BASE2008-10:第一个版本的android
BASE_1_12009-02:第一个安卓更新,官方称为1.1
CUPCAKE2009-05:android1.5
CUR_DEVELOPMENT发展过程中构建的版本,但是未正式发布
DONUT2009-09:android1.6
ECLAIR2009-11:android2.0
ECLAIR_0_12009-12:android2.0.1
ECLAIR_MR12010-01:android2.1
FROYO2010-06:android2.2
GINGERBREAD2010-11:android2.3
GINGERBREAD_MR12011-02:android2.3.3
HONEYCOMB2011-02:android3.0
HONEYCOMB_MR12011-05:android3.1
HONEYCOMB_MR22011-06:android3.2
ICE_CREAM_SANDWICH2011-10:android4.0
ICE_CREAM_SANDWICH_MR12011-12android4.0.3
JELLY_BEAN2012-06:android4.1
JELLY_BEAN_MR1android4.2
JELLY_BEAN_MR2android4.3
KITKATandroid4.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";
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值