Java 检查wifi是否已启用,以及SharedReferences
我有个小问题。。我有一个wifi开关,我可以启用或禁用它。我正在使用SharedReferences保存切换状态,并在onCreate中编写了以下代码:Java 检查wifi是否已启用,以及SharedReferences,java,android,sharedpreferences,android-wifi,wifimanager,Java,Android,Sharedpreferences,Android Wifi,Wifimanager,我有个小问题。。我有一个wifi开关,我可以启用或禁用它。我正在使用SharedReferences保存切换状态,并在onCreate中编写了以下代码: sPref = getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE); // Inizializzo la sharedpreferences ToggleButton wifitoggle = (ToggleButton) findViewById(R.id.wifitoggl
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已启用。。
如果
情况有问题吗?谢谢。这不会在所有情况下都起作用,因为用户每次都可以更改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());
确定和监视连接状态
下面是检查是否启用wifi的代码:-
boolean wifiEnabled = AndroidGPSTrackingActivity.wifiManager.isWifiEnabled();
如果启用了wifi,请检查:-
// if WIFI Enabled get lat/long using WIFI Services
if (wifiEnabled) {
//do something
Log.d("Network", "Network");
}
}
使用if(togglewifi&&wifiManager.isWifiEnabled())你的意思是:
if(togglewifi){wifitoggle.setChecked(wifiManager.isWifiEnabled());}或者{wifitoggle.setChecked(wifiManager.isWifiEnabled());}
?你能帮我吗?我说得对吗?toogle状态指示是否启用wifi。然后,您不需要在首选项中保存状态,因为此状态仅取决于当前wifi状态。因此,用上面的代码片段替换整个块,而不使用if-then-else语句。但如果我在应用程序中启用wifi,则切换状态将从关闭变为打开(我更改图标),如果我退出应用程序时不保存状态,状态将重置。。是否?是的,只要系统服务允许您访问此信息。您可以找到可访问服务的列表。我只需将
放入清单?@David\u D yes并为此编写广播接收器。并更新您的共享首选项值。如果我以前写过相同的条件,是否写入相同的条件?