Returns true if {@code e} is due to a firmware bug fixed after Android 4.2.2.
https://code.google.com/p/android/issues/detail?id=54072
434358
public static boolean isAndroidGetsocknameError(AssertionError e) {
    return e.getCause() != null && e.getMessage() != null
        && e.getMessage().contains("getsockname failed");
  }
1197434
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
	private boolean hasElevation() {
		return Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && getElevation() > 0.0f;
	}
1236704
public static boolean checkMobileDataState() throws Exception {
        try {
            ConnectivityManager connectivityManager = (ConnectivityManager) QuickUtils.getContext().getSystemService(Context.CONNECTIVITY_SERVICE);
            Class connectivityManagerClass = Class.forName(connectivityManager.getClass().getName());
            Method getMobileDataEnabled = connectivityManagerClass.getDeclaredMethod("getMobileDataEnabled");
            getMobileDataEnabled.setAccessible(true);

            return (Boolean) getMobileDataEnabled.invoke(connectivityManager);
        } catch(Exception e) {
            e.printStackTrace();
            throw new Exception("Unexpected exception. Please check stack trace");
        }
    }
1160935
protected function checkBrowserAndroidAcerA501()
    {
        if( stripos($this->_agent,'Android') !== false )
        {
            if( stripos($this->_agent,'A501 Build') !== false )
            {
                $this->setVersion(self::VERSION_UNKNOWN);
                $this->setMobile(true);
                $this->setBrowser(self::BROWSER_ACER_A501);
                return true;
            }
        }
        return false;
    }
109793
@TargetApi(Build.VERSION_CODES.KITKAT)
    public static boolean hasDeviceAdminFeature(Context context) {
        return hasDeviceAdminFeature(context.getPackageManager());
    }
411302
public boolean resourceNotReady(IOException e) {
    GoogleJsonResponseException jsonException = getJsonResponseExceptionOrNull(e);
    if (jsonException != null) {
      return resourceNotReady(getDetails(jsonException));
    }
    return false;
  }
127463
public static boolean isConnectionClosure(ShutdownSignalException e) {
    return e instanceof AlreadyClosedException ? e.getReference() instanceof Connection
        : e.isHardError();
  }
132879
private static boolean isNetworkConnectException(Throwable e) {
        do {
            if (IOException.class.isInstance(e)) {
                return true;
            }
            e = e.getCause();
        } while (e != null);
        return false;
    }
967564
public boolean accessDeniedNonRecoverable(GoogleJsonError e) {
    ErrorInfo errorInfo = getErrorInfo(e);
    if (errorInfo != null) {
      String reason = errorInfo.getReason();
      return ACCOUNT_DISABLED_REASON_CODE.equals(reason)
          || ACCESS_NOT_CONFIGURED_REASON_CODE.equals(reason);
    }
    return false;
  }
1317355
@FFDCIgnore(NumberFormatException.class)
    private static boolean determineIsJava8Before161(String version) {
        try {
            return version != null 
                && version.startsWith("1.8.0_")
                && Integer.parseInt(version.substring(6)) < 161;
        } catch (NumberFormatException ex) {
            //no-op
        }
        return false;
    }
669345
public synchronized boolean contains(EvidenceType type, Evidence e) {
        if (null != type) {
            switch (type) {
                case VENDOR:
                    return vendors.contains(e);
                case PRODUCT:
                    return products.contains(e);
                case VERSION:
                    return versions.contains(e);
                default:
                    break;
            }
        }
        return false;
    }
1150131
private static boolean checkPlayServices(OrtcClient ortcClient) {
        int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(ortcClient.appContext);
        if (resultCode != ConnectionResult.SUCCESS) {
        	/*
        	if (GooglePlayServicesUtil.isUserRecoverableError(resultCode)) {
                GooglePlayServicesUtil.getErrorDialog(resultCode, (Activity) ortcClient.appContext, PLAY_SERVICES_RESOLUTION_REQUEST).show();
            } else {
            	ortcClient.raiseOrtcEvent(EventEnum.OnException, ortcClient, new OrtcGcmException("The device is not supported!"));                
            }*/
            return false;
        }
        return true;
    }
105994
@SuppressLint("NewApi")
	protected boolean isActivitiyDestroyed() {

		if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
			return mActivity.isFinishing() || mActivity.isDestroyed();
		} else {
			return mActivity.isFinishing();
		}

	}
971760
protected function checkBrowserAndroidThinkPadTablet()
    {
        if( stripos($this->_agent,'Android') !== false )
        {
            if( stripos($this->_agent,'ThinkPad Tablet') !== false )
            {
                $this->setVersion(self::VERSION_UNKNOWN);
                $this->setMobile(true);
                $this->setBrowser(self::BROWSER_LENOVO_THINKPAD_TABLET);
                return true;
            }
        }
        return false;
    }
576918
function(finishedCallback){
      self.getFirmwareVersion(function(data,error){
        self.deviceData.firmwareVersion = data;
        finishedCallback(error);
      });
    }
701353
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2)
    public static boolean hasBluetoothLEFeature(PackageManager manager) {
        return manager.hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE);
    }
979107
public boolean hasErrors(){
		if(this.messageHandlers.containsKey(E_MessageType.ERROR)){
			return (this.messageHandlers.get(E_MessageType.ERROR).getCount()==0)?false:true;
		}
		return false;
	}