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