我有一点问题..我有一个wifi切换,我可以启用它或禁用它。我用共享偏好保存了切换状态,在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
条件出错了什么?感谢。
答案 0 :(得分:2)
这不适用于所有情况,因为用户可以随时更改Wifi状态,并且您的应用程序无法使用您的代码识别此状态。例如,如果togglewifi=true
因为您之前在某个地方保存了状态,那么您将按钮设置为已选中但这并不意味着启用了wifi。排他性或不会将第二个条件检查为TRUE || FALSE = TRUE
和TRUE || TRUE = TRUE
。在这种情况下的结果仅取决于第一个参数。修复你的if then else构造:
WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
ToggleButton wifiToggle = (ToggleButton) findViewById(R.id.wifitoggle);
wifiToggle.setChecked(wifiManager.isWifiEnabled());
答案 1 :(得分:0)
确定和监控连接状态
答案 2 :(得分: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");
}
}