以编程方式连接到WiFi网络

时间:2013-05-06 16:02:38

标签: android wifi

我正在尝试制作应用,但我遇到了一些我现在无法解决的问题:

我的应用程序必须连接到具有指定名称的特定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这样的线程但是无法使它工作......

感谢阅读,我希望这很容易解决!

亲切的问候, 劳尔苏亚雷斯

1 个答案:

答案 0 :(得分:2)

您可以收听操作(ConnectivityManager.CONNECTIVITY_ACTION)并确定您是否已连接到活动网络。

IntentFilter filter = new IntentFilter();
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);

此外,您还可以检查当前处于活动状态的网络类型(Type_WIFI,Type_MOBILE)。 使用此intent过滤器实现广播接收器,并在接收器的onReceive()方法中执行任务。