2

我正在尝试获取 Android 设备当前 WiFi 状态的字符串表示形式。我正在使用 的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但不确定它的用途。

4

2 回答 2

4

我知道您已经接受了答案,但您不应该使用发布的代码,因为正如您所说,它很脆弱且难以维护。没有理由会这样。

  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 文档中看到一个变量列为“常量”时,这意味着它被声明为 public static final。它可以作为 ClassName.CONST_VARIABLE_NAME 访问。按照惯例,这些变量将全部大写,但这不是语言要求。一般来说,您永远不需要使用这些成员的实际值,除非您需要做一些奇怪的事情,否则您应该始终通过成员名称访问它们。

于 2010-06-01T03:43:43.103 回答
0

怎么样:

  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";
    }
  }
于 2010-05-31T20:29:53.700 回答