我正在创建一个应用程序,该应用程序会在其MainActivity
中显示已配置的Wi-Fi网络列表。现在,在获取已配置网络列表之前,我的应用程序会检查Wi-Fi是否已打开。如果没有,则会显示AlertDialog
,其中包含"打开Wi-Fi" Button
会触发AsyncTask
打开Wi -Fi。
现在,我正在使用此代码获取已配置的Wi-Fi网络列表
@SuppressWarnings("deprecation")
private ArrayList<String> getAvailableNetworks() {
manager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
availableNetworks = new ArrayList<String>();
if (!manager.isWifiEnabled()) {
showDialog(2);
}
if (manager.isWifiEnabled()) {
configuredNetworks = manager.getConfiguredNetworks();
for (int i = 0; i < configuredNetworks.size(); i++) {
availableNetworks.add(configuredNetworks.get(i).SSID.replaceAll("\"", ""));
}
}
return availableNetworks;
}
现在,问题在于,当应用发现Wi-Fi已关闭时,它只会显示使用AlertDialog
的{{1}}并转到下一行代码,已配置的网络列表完全空白。
如何让它等到showDialog(2);
完成打开Wi-Fi才能转到下一行代码?
先谢谢。
答案 0 :(得分:1)
你可以在OnPreExecute上启动一个Indeterminate Progress对话框(unCancelable),然后在onPostExecute中将其关闭
如果您不希望代码在asyncTask完成之前开始执行,只需将该代码放入AsyncTask的onPostExecute方法