【问题标题】:Connecting to a WiFi network programatically以编程方式连接到 WiFi 网络
【发布时间】:2013-04-30 10:26:57
【问题描述】:

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

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

所以,现在我做到了:

启用 wifi 部分。这是一个通过名为 enableWifi() (How to enable/disable WiFi from an application?) 的 AlertDialog 调用的函数

设置 WiFi 网络信息并在那里连接。它也是一个通过名为 setupWiFi() (How and what to set to Android WifiConfiguration.preSharedKey to connect to the WPA2 PSK WiFi network) 的 AlertDialog 调用的函数

获取 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 之类的线程,但无法使其工作......

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

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

【问题讨论】:

    标签: android wifi


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2023-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-26
      相关资源
      最近更新 更多