我有一个小问题.. 我有一个 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
条件有问题吗?谢谢。
最佳答案
这并非在所有情况下都有效,因为用户每次都可以更改 Wifi 状态,而您的应用程序无法通过您的代码识别这一点。例如,如果 togglewifi=true
因为您之前将状态保存在某处,那么您将按钮设置为已选中,但这并不意味着 wifi 已启用。 exclusive or 不会将第二个条件检查为 TRUE || FALSE = TRUE
和 TRUE ||真 = 真
。这种情况下的结果仅取决于第一个参数。修复您的 if then else 构造:
WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
ToggleButton wifiToggle = (ToggleButton) findViewById(R.id.wifitoggle);
wifiToggle.setChecked(wifiManager.isWifiEnabled());
关于java - 检查 wifi 是否启用和共享首选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19924168/