Я написал приложение для простого подключения устройств Android к различным беспроводным сетям нашей компании. Он предназначен для запуска один раз, когда устройство распаковано и настроено с остальной частью нашего набора приложений.
Проблема в том, что иногда устройство забывает о сетях без предупреждения об этом. Я не смог воспроизвести это, к сожалению. Я надеюсь, что пропустил какой-то вызов API, который гуру Android здесь могут помочь мне найти.
Код, приведенный ниже, взят из моего приложения для беспроводной инициализации с однократным запуском, с изменениями сетевых имен и ключей. Кто-нибудь может увидеть что-то, что я делаю здесь неправильно?
Edit: устройство, на котором я наблюдал это поведение, является союзником LG. Я надеюсь, что это ошибка моего собственного кода, вот с чего я и начинаю.
@Override
public void onCreate(Bundle savedInstanceState)
{
WifiConfiguration n1Config = new WifiConfiguration();
n1Config.SSID = "\"networkOne\"";
n1Config.preSharedKey = "\"...\"";
n1Config.status = WifiConfiguration.Status.ENABLED;
WifiConfiguration n2Config = new WifiConfiguration();
n2Config.SSID = "\"networkTwo\"";
n2Config.hiddenSSID = true;
n2Config.wepKeys[0] = "...";
n2Config.wepTxKeyIndex = 0;
n2Config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
n2Config.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
n2Config.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
n2Config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
n2Config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED);
n2Config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
n2Config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
n2Config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
n2Config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);
n2Config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
n2Config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
n2Config.status = WifiConfiguration.Status.ENABLED;
WifiManager wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);
int n1ID = wifiManager.addNetwork(n1Config);
wifiManager.enableNetwork(n1ID, false);
int n2ID = wifiManager.addNetwork(n2Config);
wifiManager.enableNetwork(n2ID, false);
}