Android 为什么WifiManager.addNetwork返回一个网络ID,但随后将无法连接
我正在使用WifiManager连接到网络或实际设备。它工作得很好,然后突然停止,代码没有变化。我确实开始使用不同的手机。我已经检查过了,我相信手机安装正确。当我调用addNetwork时,我会返回一个与当前网络ID不同的网络ID。当我运行enableNetwork,将addNetwork返回的网络ID传递给它时,我不会收到错误,但当我检查连接信息时,我仍然连接到原始网络。我连接的设备不需要用户或密码。 谁能告诉我我做错了什么 提前谢谢你能给我的任何帮助 我尝试在启用网络后立即重新连接,并尝试在连接到新网络之前断开与当前网络的连接Android 为什么WifiManager.addNetwork返回一个网络ID,但随后将无法连接,android,wifi,Android,Wifi,我正在使用WifiManager连接到网络或实际设备。它工作得很好,然后突然停止,代码没有变化。我确实开始使用不同的手机。我已经检查过了,我相信手机安装正确。当我调用addNetwork时,我会返回一个与当前网络ID不同的网络ID。当我运行enableNetwork,将addNetwork返回的网络ID传递给它时,我不会收到错误,但当我检查连接信息时,我仍然连接到原始网络。我连接的设备不需要用户或密码。 谁能告诉我我做错了什么 提前谢谢你能给我的任何帮助 我尝试在启用网络后立即重新连接,并尝试在
import android.content.Context;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.AsyncTask;
import android.util.Log;
public class DeviceConnect extends AsyncTask<String, String, String> {
public interface AsyncResponse {
void processFinish(String output);
}
public AsyncResponse delegate = null;
public DeviceConnect(AsyncResponse delegate){
this.delegate = delegate;
}
private Context _context = null;
private String _result = null;
private WiFiHandler _wifiHandler = null;
public void setContext(Context value) {
this._context = value;
}
public String getResult() {
return this._result;
}
@Override
protected String doInBackground(String... params) {
String message = null;
boolean ok = true;
String device = params[0];
this._result = null;
this._wifiHandler = new WiFiHandler();
if (!device.isEmpty()) {
int netID = 0;
WifiManager wifi = (WifiManager) this._context.getSystemService(Context.WIFI_SERVICE);
WifiConfiguration config;
WifiInfo connInfo;
config = new WifiConfiguration();
config.SSID = device;
wifi.disconnect();
netID = wifi.addNetwork(config);
Log.e("doInBackground", "netID: " + netID);
if (netID > 0) {
try {
wifi.enableNetwork(netID, true);
} catch (Exception ex) {
ok = false;
this._result = device + " - Add network failed (2)";
}
if(ok) {
connInfo = wifi.getConnectionInfo();
Log.e("doInBackground", connInfo.getSSID() + " - " + connInfo.getNetworkId());
if (connInfo != null && connInfo.getSSID().equalsIgnoreCase(device)) { // || (netID = connInfo.getNetworkId()) <= 0) {
this._result = "SUCCESS";
} else {
this._result = device + " - Add device failed (3)";
}
}
} else {
this._result = device + " - Add device failed (1)";
}
} else {
this._result = "No device to configure";
}
return this._result;
}
@Override
public void onPostExecute(String result) {
delegate.processFinish(result);
}
}
它应该连接到设备并返回成功。对于我需要做的事情,我将只与设备连接一秒钟左右。经过几个小时的尝试和失败,我终于找到了答案。这显然是个时间问题。下面的代码解决了我的问题
Object lock = new Object();
lock = wifi.enableNetwork(netID, true);
synchronized(lock) {
lock.wait(500);
}
你能解释一下它为什么起作用吗?看来只是堵住了线