private static void acquireProxyStatusSDK1_11(
      ProxyConfiguration conf, ProxyStatus status, EnumSet<ProxyCheckOptions> checkOptions) {
    // API version <= 11 (Older devices)
    status.set(ProxyStatusProperties.WIFI_ENABLED, CheckStatusValues.NOT_CHECKED, false, false);
    status.set(ProxyStatusProperties.WIFI_SELECTED, CheckStatusValues.NOT_CHECKED, false, false);

    LogWrapper.d(TAG, "Checking if proxy is enabled ...");
    status.set(isProxyEnabled(conf));
    broadCastUpdatedStatus();

    if (status.getProperty(ProxyStatusProperties.PROXY_ENABLED).result) {
      LogWrapper.d(TAG, "Checking if proxy is valid hostname ...");
      status.set(isProxyValidHostname(conf));
      broadCastUpdatedStatus();

      LogWrapper.d(TAG, "Checking if proxy is valid port ...");
      status.set(isProxyValidPort(conf));
      broadCastUpdatedStatus();

      if (checkOptions.contains(ProxyCheckOptions.ONLINE_CHECK)
          && status.getProperty(ProxyStatusProperties.PROXY_VALID_HOSTNAME).result
          && status.getProperty(ProxyStatusProperties.PROXY_VALID_PORT).result) {
        LogWrapper.d(TAG, "Checking if proxy is reachable ...");
        status.set(isProxyReachable(conf));
        broadCastUpdatedStatus();
      } else {
        status.set(
            ProxyStatusProperties.PROXY_REACHABLE, CheckStatusValues.NOT_CHECKED, false, false);
      }
    } else {
      wifiNotEnabled_DisableChecking(status);
    }
  }
 private static void wifiNotEnabled_DisableChecking(ProxyStatus status) {
   status.set(ProxyStatusProperties.PROXY_ENABLED, CheckStatusValues.NOT_CHECKED, false, false);
   status.set(
       ProxyStatusProperties.PROXY_VALID_HOSTNAME, CheckStatusValues.NOT_CHECKED, false, false);
   status.set(ProxyStatusProperties.PROXY_VALID_PORT, CheckStatusValues.NOT_CHECKED, false, false);
   status.set(ProxyStatusProperties.PROXY_REACHABLE, CheckStatusValues.NOT_CHECKED, false, false);
 }
  /**
   * Can take a long time to execute this task. - Check if the proxy is enabled - Check if the proxy
   * address is valid - Check if the proxy is reachable (using a PING) - Check if is possible to
   * retrieve an URI resource using the proxy
   */
  public static void acquireProxyStatus(
      ProxyConfiguration conf,
      ProxyStatus status,
      EnumSet<ProxyCheckOptions> checkOptions,
      int timeout) {
    status.clear();
    status.startchecking();
    broadCastUpdatedStatus();

    if (Build.VERSION.SDK_INT >= 12) {
      acquireProxyStatusSDK12(conf, status, checkOptions);
    } else {
      acquireProxyStatusSDK1_11(conf, status, checkOptions);
    }

    if (checkOptions.contains(ProxyCheckOptions.ONLINE_CHECK)) {
      // Always check if WEB is reachable
      LogWrapper.d(TAG, "Checking if web is reachable ...");
      status.set(isWebReachable(conf, timeout));
      broadCastUpdatedStatus();
    } else {
      status.set(ProxyStatusProperties.WEB_REACHABLE, CheckStatusValues.NOT_CHECKED, false, false);
    }
  }