Android应用程序编程的新手,我有一个场景,我很难在Android Studio中编写代码。
我的应用要求用户连接到特定的Wifi。所以我想定期检查Wifi状态,如果它没有连接/连接到错误的Wifi,我想抛出一个AlertDialog
,直到用户连接到正确的Wifi。
然而,我正在努力实施。到目前为止,我的方法是使用方法checkWifi()
来测试我们是否使用正确的Wifi,并相应地设置全局布尔值onCorrectWifi
。这个checkWifi()
通过TimerTask定期运行,每30秒运行一次。
在与checkWifi()
方法相同的TimerTask中,另一种方法是handleWifiStatus()
。 handleWifiStatus()
方法查看onCorrectWifi
,如果它为真,则不执行任何操作。如果onCorrectWifi
为False,则handleWifiStatus()
会生成AlertDialog,然后进入while循环。 while循环重复调用checkWifi()
,直到onCorrectWifi
再次为True,此时退出while循环并关闭AlertDialog并恢复正常的应用程序活动。
我正在努力实现这一目标。
我为自己制作的这个太复杂了吗?是否有一个更好/更简单的实现,将实现整个"检查Wifi状态,如果错误,显示AlertDialog直到Wifi再次良好"概念
答案 0 :(得分:1)
初看起来,你的方法似乎很合理,所以我不太清楚出了什么问题。话虽这么说,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
);
答案 1 :(得分:0)
我会使用BroadcaseReceiver
来捕获Wifi连接更改事件。这样,您就不需要运行定期检查。 (见:How to detect when WIFI Connection has been established in Android?)
不确定您使用的是哪种Dialog,但如果您使用的是AlertDialog.Builder构建的常规对话框,则无需运行while循环即可继续显示对话框。只需拨打dialog.create().show()
即可显示并仅在建立正确的Wifi连接时将其关闭。鉴于该方案,我将选择ProgressDialog
或ProgressBar
而不是AlertDialog
。