我正在尝试制作应用,但我遇到了一些我现在无法解决的问题:
我的应用程序必须连接到具有指定名称的特定AP并显示IP网关。我想要做的是,当应用程序启动时,它会检查WiFi模块是否已启用。如果不是,则启用它并连接到AP。如果已启用,请检查它是否已连接到正确的AP,如果不是,请连接到那里。
所以,现在我做了:
启用wifi部分。这是一个名为enableWifi()(How to enable/disable WiFi from an application?)
的AlertDialog调用函数设置WiFi网络信息并连接到那里。它也是一个通过AlertDialog调用的函数,名为setupWiFi()(How and what to set to Android WifiConfiguration.preSharedKey to connect to the WPA2 PSK WiFi network)
获取IP网关。这是一个名为setIP()的函数。这将在EditText视图中写入de IP。 (Programmatically getting the gateway and subnet mask details)
有两种连接AP的方法:
1)启用Wifi - >连接到AP
2)连接到AP
所以问题就出现了:当我启用WiFi模块时,我应该等待完成启动才能开始连接到AP,然后等待完成连接以检索网关IP。我不知道如何做那些“等待”的部分。如果我在2),我的应用程序现在所做的是连接到AP并获取当前网络的网关,这仍然是旧网络和我们不想要的网关。
我尝试过像AsyncTask和Thread这样的线程但是无法使它工作......
感谢阅读,我希望这很容易解决!
亲切的问候, 劳尔苏亚雷斯
答案 0 :(得分:2)
您可以收听操作(ConnectivityManager.CONNECTIVITY_ACTION)并确定您是否已连接到活动网络。
IntentFilter filter = new IntentFilter();
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
此外,您还可以检查当前处于活动状态的网络类型(Type_WIFI,Type_MOBILE)。 使用此intent过滤器实现广播接收器,并在接收器的onReceive()方法中执行任务。