Я использую WifiManager для подключения к сети или фактически к устройству. Он работал отлично, а затем внезапно остановился, без изменений кода. Я начал использовать другой телефон. Я проверил и считаю, что телефон настроен правильно. Когда я вызываю addNetwork, я получаю идентификатор сети, который отличается от текущего идентификатора сети. Когда я запускаю enableNetwork, передавая идентификатор сети, возвращенный addNetwork, я не получаю сообщение об ошибке, но при проверке информации о соединении я все еще подключен к исходной сети. Устройство, к которому я подключаюсь, не требует ввода имени пользователя или пароля.
Может кто-нибудь сказать мне, что я делаю не так.
Заранее благодарю за любую помощь, которую вы можете мне оказать.
Я попытался выполнить переподключение сразу после включения сети, и я попытался отключиться от текущей сети перед подключением к новой.
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);
}
}
Следует подключиться к устройству и вернуть «УСПЕХ». Для того, что мне нужно сделать, я буду подключен к устройству только в течение секунды или около того.