Android 应用程序编程新手,我遇到了一个很难在 Android Studio 中编写代码的场景。
我的应用程序要求用户连接到特定的 Wifi。因此,我想定期检查 Wifi 状态,如果未连接/连接到错误的 Wifi,我想抛出一个 AlertDialog
直到用户连接到正确的 Wifi。
但是,我在实现方面遇到了困难。到目前为止,我的方法是使用一个方法 checkWifi()
来测试我们是否使用正确的 Wifi,并相应地设置一个全局 boolean 值 onCorrectWifi
。此 checkWifi()
通过 TimerTask 每 30 秒定期运行一次。
在与 checkWifi()
方法相同的 TimerTask 中,有另一个名为 handleWifiStatus()
的方法。 handleWifiStatus()
方法查看 onCorrectWifi
,如果它为 True,则不执行任何操作。如果 onCorrectWifi
为 False,handleWifiStatus()
会生成一个 AlertDialog,然后进入 while 循环。 while 循环重复调用 checkWifi()
直到 onCorrectWifi
再次为 True,此时退出 while 循环,并关闭 AlertDialog,并恢复通常的应用 Activity 。
我正在努力解决这个问题。
我是不是把这件事搞得太复杂了?是否有更好/更简单的实现来实现整个“检查 Wifi 状态,如果错误,显示 AlertDialog 直到 Wifi 再次良好”的概念?
最佳答案
乍一看,您的方法似乎很合理,所以我不太确定出了什么问题。话虽这么说,Android 实际上具有在网络状态发生变化时收到通知的功能,以简化这种情况。
// Retrieve the ConnectivityManager via the current Context
ConnectivityManager cm = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
// Create the method to be called when the WiFi network changes
ConnectivityManager.NetworkCallback callback = new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(Network network) {
// Check that this Network is the correct one and take
// action as appropriate
}
};
// Set the callback to be fired when WiFi status changes
cm.registerNetworkCallback(
new NetworkRequest.Builder()
.addTransportType(TRANSPORT_WIFI)
.build(),
callback
);
关于java - 处理应用程序内 WiFi 状态的定期检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50593892/