1

我有一个小问题..我有一个 wifi 开关,我可以启用或禁用它。我正在使用 sharedpreferences 保存切换状态,并在 onCreate 中编写了以下代码:

sPref  = getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE); // Inizializzo la sharedpreferences
    ToggleButton wifitoggle = (ToggleButton) findViewById(R.id.wifitoggle); 
    boolean togglewifi = sPref.getBoolean("KEY", false);   
        if (togglewifi || wifiManager.isWifiEnabled()) 
        {

            wifitoggle.setChecked(true);
        }
            else
        {
            wifitoggle.setChecked(false);
        }

状态已保存并且运行良好,但正如您所见,我也在尝试检查 wifi 是否已启用(例如,通过 android wifi 设置启用它,而不是从我的应用程序中启用它)。现在,如果我尝试通过设置启用 wifi 并且我打开我的应用程序并没有显示 wifi 已启用..if情况有什么问题吗?谢谢。

4

3 回答 3

2

这并非在所有情况下都有效,因为用户每次都可以更改 Wifi 状态,而您的应用程序无法通过您的代码识别这一点。例如,如果togglewifi=true因为您之前在某处保存了状态,那么您将按钮设置为选中,但这并不意味着 wifi 已启用。异或不会检查第二个条件为TRUE || FALSE = TRUEand TRUE || TRUE = TRUE。这种情况下的结果仅取决于第一个参数。修复您的 if then else 构造:

WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
ToggleButton wifiToggle = (ToggleButton) findViewById(R.id.wifitoggle);
wifiToggle.setChecked(wifiManager.isWifiEnabled());
于 2013-11-12T08:34:24.070 回答
0

确定和监控连接状态

检查这个

于 2013-11-12T08:56:14.577 回答
0

以下是检查是否启用 wifi 的代码:-

            boolean wifiEnabled = AndroidGPSTrackingActivity.wifiManager.isWifiEnabled();

如果启用了 wifi,请检查:-

// if WIFI Enabled get lat/long using WIFI Services
        if (wifiEnabled) {
            //do something
            Log.d("Network", "Network");
            }
        }
于 2013-11-12T09:41:27.803 回答