如何以编程方式显示要连接的Wifi网络列表?

时间:2014-03-25 23:11:45

标签: android wifi android-wifi

我正在编程Nexus 7.在我的程序中,我想要用户选择要使用的Wifi网络(预先配置或选择创建新网络)。如何以编程方式启动该对话框?

3 个答案:

答案 0 :(得分:6)

尝试

Intent intent = new Intent(WifiManager.ACTION_PICK_WIFI_NETWORK);       
startActivity(intent);

答案 1 :(得分:2)

要访问wi-fi列表,您可能首先需要使用Wi-Fi权限。在Wi-Fi扫描可以提供结果列表之前,必须首先打开Wi-Fi。

我的猜测是:ACCESS_WIFI_STATE

我认为最简单的方法是启动适当的意图。 ACTION_PICK_WIFI_NETWORK http://developer.android.com/reference/android/net/wifi/WifiManager.html#ACTION_PICK_WIFI_NETWORK

(也可以参见:ACTION_WIFI_SETTINGS)

答案 2 :(得分:0)

如果您想创建自己的对话框:

WifiManager wifiMgr = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
List<WifiConfiguration> list = wifiMgr.getConfiguredNetworks();

为您提供网络列表以及连接到具体SSID:

public void connectToWifi(String ssid) {

        WifiConfiguration conf = new WifiConfiguration();
        conf.SSID = "\"" + ssid + "\""; // Please note the quotes.
                                                    // String should contain
                                                    // ssid in quotes

        conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);

        wifiMgr.addNetwork(conf);
        Log.d(PluginConstants.LOG_TAG, ssid+" added");

        List<WifiConfiguration> list = wifiMgr.getConfiguredNetworks();
        for (WifiConfiguration i : list) {
            if (i.SSID != null && i.SSID.equals("\"" + ssid + "\"")) {
                wifiMgr.disconnect();
                wifiMgr.enableNetwork(i.networkId, true);
                wifiMgr.reconnect();
                Log.d(PluginConstants.LOG_TAG, "conneting to: ssid");
                break;
            }
        }
    }
}