我连接了多个设备,并运行了gradle命令'connectedCheck',它在多个设备上运行测试。
ConnectedCheck在订单中的所有设备上执行测试。我想获取当前正在运行测试的设备的序列号。
android是否提供了这样做的方法?
答案 0 :(得分:2)
您可以获得有关Android设备的大量详细信息:
//Get the instance of TelephonyManager
TelephonyManager tm=(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
//Calling the methods of TelephonyManager the returns the information
String IMEINumber=tm.getDeviceId();
String subscriberID=tm.getDeviceId();
String SIMSerialNumber=tm.getSimSerialNumber();
String networkCountryISO=tm.getNetworkCountryIso();
String SIMCountryISO=tm.getSimCountryIso();
String softwareVersion=tm.getDeviceSoftwareVersion();
String voiceMailNumber=tm.getVoiceMailNumber();
//Get the phone type
String strphoneType="";
int phoneType=tm.getPhoneType();
switch (phoneType)
{
case (TelephonyManager.PHONE_TYPE_CDMA):
strphoneType="CDMA";
break;
case (TelephonyManager.PHONE_TYPE_GSM):
strphoneType="GSM";
break;
case (TelephonyManager.PHONE_TYPE_NONE):
strphoneType="NONE";
break;
}
要获取设备型号名称,我们使用:
public String getDeviceName() {
String manufacturer = Build.MANUFACTURER;
String model = Build.MODEL;
if (model.startsWith(manufacturer)) {
return capitalize(model);
} else {
return capitalize(manufacturer) + " " + model;
}
}
private String capitalize(String s) {
if (s == null || s.length() == 0) {
return "";
}
char first = s.charAt(0);
if (Character.isUpperCase(first)) {
return s;
} else {
return Character.toUpperCase(first) + s.substring(1);
}
}
答案 1 :(得分:0)
我找到了解决方案!事实上,首先没有问题。
问题: Gradle android插件运行测试的任务是'connectedCheck'。它执行测试连接到主机的Android设备的数量。现在当我在@Ignore测试时,它将在所有那些设备上被忽略,因为我只想为失败的设备/设备做那些
解决方案:添加自定义jUnit批注,该批注为设备序列ID获取一组String值。通过扩展BlockJUnit4ClassRunner覆盖runChild来编写自定义测试运行器,以检查如果注释方法,Build.Device是否与注释中提供的相同。
如果忽略fireTestIgnored,则仅针对您在注释中指定的设备跳过它。