一、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"; } }
时间: 2024-09-30 18:36:05