java - 检查 wifi 是否启用和共享首选项

标签 java android sharedpreferences android-wifi wifimanager

我有一个小问题.. 我有一个 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 = TRUETRUE ||真 = 真。这种情况下的结果仅取决于第一个参数。修复您的 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/

相关文章:

java - 使用共享首选项存储数组列表,返回空对象

android - 将 uri 保存到 sharedPreferences 并使用 mediaplayer 播放

javax 邮件超出发送限制 : SMTPSendFailedException

java - 如何在 Spring 中开发可以作为 REST 和 SOAP 公开的 Web 服务?

java - 解析Jetty日志记录

使用 Phonegap 全局数组的 Javascript 不起作用

java - 当有行跨度时,flextable 会被点击列

java - Firebase removeValue() 函数未删除正确的值

android - 不能使用@string 表示法在 AndroidManifest.xml 中定义 <intent-filter>

android - 使用共享首选项来记住单击后隐藏的 TextView