检查是否启用了wifi和共享偏好

时间:2013-11-12 08:23:23

标签: java android sharedpreferences android-wifi wifimanager

我有一点问题..我有一个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条件出错了什么?感谢。

3 个答案:

答案 0 :(得分:2)

这不适用于所有情况,因为用户可以随时更改Wifi状态,并且您的应用程序无法使用您的代码识别此状态。例如,如果togglewifi=true因为您之前在某个地方保存了状态,那么您将按钮设置为已选中但这并不意味着启用了wifi。排他性或不会将第二个条件检查为TRUE || FALSE = TRUETRUE || 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)

确定和监控连接状态

Check this

答案 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");
            }
        }