Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检查wifi是否已启用,以及SharedReferences_Java_Android_Sharedpreferences_Android Wifi_Wifimanager - Fatal编程技术网

Java 检查wifi是否已启用,以及SharedReferences

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

我有个小问题。。我有一个wifi开关,我可以启用或禁用它。我正在使用SharedReferences保存切换状态,并在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已启用。。
如果
情况有问题吗?谢谢。

这不会在所有情况下都起作用,因为用户每次都可以更改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并为此编写广播接收器。并更新您的共享首选项值。如果我以前写过相同的条件,是否写入相同的条件?