我已成功在我的设备上使用指定的SSID创建了一个可移植的热点。现在我想从另一台设备连接到它!我使用此代码:
WifiConfiguration conf = new WifiConfiguration();
conf.SSID = "\"" + "TinyBox" + "\"";
conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
WifiManager wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
wifiManager.addNetwork(conf);
List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
for( WifiConfiguration i : list ) {
if(i.SSID != null && i.SSID.equals("\"" + "TinyBox" + "\"")) {
wifiManager.disconnect();
wifiManager.enableNetwork(i.networkId, true);
wifiManager.reconnect();
break;
}
}
但没有任何反应。哪里出错了?感谢
答案 0 :(得分:10)
所以我发现了这个问题!由于引号“”,SSID错误。因此,如果您使用以下代码创建一个开放的可移植热点(我将其带到网上的某个地方):
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
if(wifiManager.isWifiEnabled())
{
wifiManager.setWifiEnabled(false);
}
Method[] wmMethods = wifiManager.getClass().getDeclaredMethods(); //Get all declared methods in WifiManager class
boolean methodFound=false;
for(Method method: wmMethods){
if(method.getName().equals("setWifiApEnabled")){
methodFound=true;
WifiConfiguration netConfig = new WifiConfiguration();
netConfig.SSID = "\""+"TinyBox"+"\"";
netConfig.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
try {
boolean apstatus=(Boolean) method.invoke(wifiManager, netConfig,true);
for (Method isWifiApEnabledmethod: wmMethods)
{
if(isWifiApEnabledmethod.getName().equals("isWifiApEnabled")){
while(!(Boolean)isWifiApEnabledmethod.invoke(wifiManager)){
};
for(Method method1: wmMethods){
if(method1.getName().equals("getWifiApState")){
int apstate;
apstate=(Integer)method1.invoke(wifiManager);
}
}
}
}
if(apstatus)
{
System.out.println("SUCCESSdddd");
}else
{
System.out.println("FAILED");
}
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}
您需要使用以下方式连接到它:
WifiConfiguration conf = new WifiConfiguration();
conf.SSID = "\"\"" + "TinyBox" + "\"\"";
conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
WifiManager wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
wifiManager.addNetwork(conf);
List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
for( WifiConfiguration i : list ) {
if(i.SSID != null && i.SSID.equals("\"\"" + "TinyBox" + "\"\"")) {
try {
wifiManager.disconnect();
wifiManager.enableNetwork(i.networkId, true);
System.out.print("i.networkId " + i.networkId + "\n");
wifiManager.reconnect();
break;
}
catch (Exception e) {
e.printStackTrace();
}
}
}