一、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";} }