wifiManager.addNetwork 失败
wifiManager.addNetwork fails
我有一个服务器是另一个 android 设备。服务器启动 wifi 热点。
在我的客户端上,我尝试自动连接到热点。
我在 onStart() 的新线程中调用这个函数:
private void enableWifi(){
if(!wifiManager.isWifiEnabled()){
wifiManager.setWifiEnabled(true);
Log.i("Wifi", "Wifi enabled");
}
if(getNetworkId() == -1){
addNetwork();
}
while(!isConnected(context)){
wifiManager.disconnect();
wifiManager.enableNetwork(getNetworkId(),true);
wifiManager.reconnect();
Log.i("Wifi", "Connecting to Hotspot");
try {
Thread.sleep(TIMEOUT);
} catch (InterruptedException e) {
Log.e("Wifi", "Thread interrupted: " + e);
}
}
Log.i("Wifi", "Connected to Hotspot");
}
private int getNetworkId(){
List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
for( WifiConfiguration i : list ) {
if(i.SSID != null && i.SSID.equals("\"" + wifiName + "\"")) {
return i.networkId;
}
}
return -1;
}
private void addNetwork(){
WifiConfiguration wifiConfiguration = new WifiConfiguration();
wifiConfiguration.SSID = "\" + wifiName + "\";
wifiConfiguration.preSharedKey = "\" + wifiPassword + "\";
wifiManager.addNetwork(wifiConfiguration);
Log.i("Wifi", "Added Hotspot to configured Networks");
}
wifiManager.addNetwork() returns -1
您的问题似乎是您在 SSID 和密码中使用了反斜杠而不是引号。
试试这个:
wifiConfiguration.SSID = "\"" + wifiName + "\"";
wifiConfiguration.preSharedKey = "\"" + wifiPassword + "\"";
我有一个服务器是另一个 android 设备。服务器启动 wifi 热点。 在我的客户端上,我尝试自动连接到热点。
我在 onStart() 的新线程中调用这个函数:
private void enableWifi(){
if(!wifiManager.isWifiEnabled()){
wifiManager.setWifiEnabled(true);
Log.i("Wifi", "Wifi enabled");
}
if(getNetworkId() == -1){
addNetwork();
}
while(!isConnected(context)){
wifiManager.disconnect();
wifiManager.enableNetwork(getNetworkId(),true);
wifiManager.reconnect();
Log.i("Wifi", "Connecting to Hotspot");
try {
Thread.sleep(TIMEOUT);
} catch (InterruptedException e) {
Log.e("Wifi", "Thread interrupted: " + e);
}
}
Log.i("Wifi", "Connected to Hotspot");
}
private int getNetworkId(){
List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
for( WifiConfiguration i : list ) {
if(i.SSID != null && i.SSID.equals("\"" + wifiName + "\"")) {
return i.networkId;
}
}
return -1;
}
private void addNetwork(){
WifiConfiguration wifiConfiguration = new WifiConfiguration();
wifiConfiguration.SSID = "\" + wifiName + "\";
wifiConfiguration.preSharedKey = "\" + wifiPassword + "\";
wifiManager.addNetwork(wifiConfiguration);
Log.i("Wifi", "Added Hotspot to configured Networks");
}
wifiManager.addNetwork() returns -1
您的问题似乎是您在 SSID 和密码中使用了反斜杠而不是引号。
试试这个:
wifiConfiguration.SSID = "\"" + wifiName + "\"";
wifiConfiguration.preSharedKey = "\"" + wifiPassword + "\"";