Android getWifiState to String - PullRequest
       4

Android getWifiState to String

1 голос
/ 01 июня 2010

Я пытаюсь получить строковое представление текущего состояния Wi-Fi устройства Android. Я использую getWifiState() метод WiFiManager и получаю целое число, возвращаемое в зависимости от текущего состояния. Это имеет смысл, поскольку getWifiState() должен возвращать целое число. В документации метода указано, что возможные возвращаемые значения переводятся в одно из следующих постоянных значений

  • 0 WIFI_STATE_DISABLING
  • 1 WIFI_STATE_DISABLED
  • 2 WIFI_STATE_ENABLING
  • 3 WIFI_STATE_ENABLED
  • 4 WIFI_STATE_UNKNOWN

Есть ли простой способ перевести целое число, возвращаемое из getWiFiState(), в строковое представление? Я посмотрел на getIntExtra, но не уверен в его использовании.

Ответы [ 2 ]

2 голосов
/ 01 июня 2010

я знаю, что вы уже приняли ответ, но вы не должны использовать опубликованный код, потому что, как вы сказали, он хрупок и сложен в обслуживании. Для этого нет никаких оснований.

  public String getWifiStateStr() {
    switch (mWifiManager.getWifiState()) {
      case WifiManager.WIFI_STATE_DISABLING:
        return "disabling";
      case WifiManager.WIFI_STATE_DISABLED:
        return "disabled";
      case WifiManager.WIFI_STATE_ENABLING:
        return "enabling";
      case WifiManager.WIFI_STATE_ENABLED:
        return "enabled";
      case WifiManager.WIFI_STATE_UNKNOWN:
        return "unknown";
      default:
        return null;  //or whatever you want for an error string
    }
  }

Это защитит вас от изменений в константном назначении, будет намного легче читать через 6 месяцев, и, если вы правильно обрабатываете строку ошибки, это должно ограничивать количество ошибок, если количество допустимых возвращаемых значений увеличивается.

Когда вы видите переменную, указанную как «Константа» в документации Android, это означает, что она объявлена ​​как общедоступная статическая финальная. Доступ к нему можно получить как ClassName.CONST_VARIABLE_NAME. Условно, что эти переменные будут во всех заглавных буквах, но это не требование языка. Вообще говоря, вам никогда не нужно использовать действительное значение таких членов, вы всегда должны получать к ним доступ по имени члена, если вам не нужно делать что-то странное.

0 голосов
/ 01 июня 2010

Как насчет просто:

  public String getWifiStateStr() {
    switch (mWifiManager.getWifiState()) {
      case 0:
        return "disabling";
      case 1:
        return "disabled";
      case 2:
        return "enabling";
      case 3:
        return "enabled";
      default:
        return "unknown";
    }
  }
...