0

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

我的应用程序必须连接到具有指定名称的特定 AP 并显示 IP 网关。我想要做的是,当应用程序启动时,它会检查 WiFi 模块是否已启用。如果不是,则启用它并连接到 AP。如果已启用,请检查它是否已连接到正确的 AP,如果没有,请连接到那里。

所以,现在我做了:

启用 wifi 部分。这是一个通过名为 enableWifi() 的 AlertDialog 调用的函数(如何从应用程序启用/禁用 WiFi?

设置 WiFi 网络信息并在那里连接。它也是一个通过名为 setupWiFi() 的 AlertDialog 调用的函数(如何以及如何设置 Android WifiConfiguration.preSharedKey 以连接到 WPA2 PSK WiFi 网络

获取 IP 网关。这是一个名为 setIP() 的函数。这会在 EditText 视图中写入 de IP。(以编程方式获取网关和子网掩码详细信息

AP有两种连接方式:

1) 启用 Wifi -> 连接到 AP

2) 连接到 AP

那么问题来了:当我启用WiFi模块时,我应该等待启用完成才能开始连接AP,然后等待连接完成才能检索网关IP。我不知道如何做那些“等待”部分。如果我在 2) 中,我的应用程序现在要做的是连接到 AP 并获​​取当前网络的网关,这仍然是旧的,也是我们不想要的。

我尝试了诸如 AsyncTask 和 Thread 之类的线程,但无法使其工作...

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

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

4

1 回答 1

2

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

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

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

于 2013-05-06T16:13:22.453 回答