• 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";
        }
    }
  • 相关阅读:
    编程日志 Vue-element-admin
    JS判断全屏,Jquery绑定动态元素Parent元素单击事件
    查询所有表内容-SQL
    正则分割获取字符串中的数字部分(包括连续数字)(连续数字的分割获取)
    nginx本地正常访问,外网无法访问
    nuget 配置无效
    URL获取上级目录
    VS 调试项目运行不发布,允许其他网内直接访问
    小数(decimal,double) 截取两位或多位,不四舍五入
    Linq简单语句记录
  • 原文地址:https://www.cnblogs.com/JianXu/p/5225287.html
Copyright © 2020-2023  润新知