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

Android 如何以编程方式显示要连接的Wifi网络列表?,android,wifi,android-wifi,Android,Wifi,Android Wifi,我正在为Nexus7编程。在我的程序中,我希望用户选择要使用的Wifi网络(预配置或创建新网络)。如何以编程方式打开该对话框?要访问wi-fi列表,您可能首先需要使用wi-fi权限。必须先打开Wi-Fi,Wi-Fi扫描才能提供结果列表 我的猜测是:进入无线状态 我认为最简单的方法是启动适当的意图。 行动选择无线网络 (也可以查看:操作\u WIFI\u设置)尝试 Intent intent = new Intent(WifiManager.ACTION_PICK_WIFI_NETWORK);

我正在为Nexus7编程。在我的程序中,我希望用户选择要使用的Wifi网络(预配置或创建新网络)。如何以编程方式打开该对话框?

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

我的猜测是:进入无线状态

我认为最简单的方法是启动适当的意图。 行动选择无线网络

(也可以查看:操作\u WIFI\u设置)

尝试

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

如果要创建自己的对话框:

WifiManager wifiMgr = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
List<WifiConfiguration> list = wifiMgr.getConfiguredNetworks();
WifiManager wifiMgr=(WifiManager)context.getSystemService(context.WIFI\u SERVICE);
List 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;
            }
        }
    }
}
public void connectToWifi(字符串ssid){
WifiConfiguration conf=新的WifiConfiguration();
conf.SSID=“\”“+SSID+”\”“;//请注意引号。
//字符串应该包含
//引用ssid
conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
wifiMgr.addNetwork(conf);
Log.d(PluginConstants.Log_标签,ssid+“添加”);
List List=wifiMgr.getConfiguredNetworks();
用于(无线配置i:列表){
如果(i.SSID!=null&&i.SSID.equals(“\”+SSID+“\”)){
wifiMgr.disconnect();
wifiMgr.enableNetwork(即networkId,true);
wifiMgr.reconnect();
Log.d(PluginConstants.Log_标签,“连接到:ssid”);
打破
}
}
}
}