未知のSSIDのリストをスキャンし、あらかじめ定義されたいくつかのパスワードでそのアクセスポイントにログインする必要があります。成功した場合は、次のタスクを続行します。失敗した場合は、次のSSIDにログインしてみてください。Android - SSIDを知る方法がパスワードで失敗しましたか?
私が作業している1を参照して、私はできる限り多くを登録しよう:
receiverWifi = new WifiReceiver();
registerReceiver(receiverWifi, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
registerReceiver(receiverWifi, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
registerReceiver(receiverWifi, new IntentFilter(WifiManager.NETWORK_STATE_CHANGED_ACTION));
registerReceiver(receiverWifi, new IntentFilter(WifiManager.NETWORK_IDS_CHANGED_ACTION));
registerReceiver(receiverWifi, new IntentFilter(WifiManager.ACTION_PICK_WIFI_NETWORK));
registerReceiver(receiverWifi, new IntentFilter(WifiManager.ACTION_REQUEST_SCAN_ALWAYS_AVAILABLE));
registerReceiver(receiverWifi, new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION));
registerReceiver(receiverWifi, new IntentFilter(WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION));
私はこのようなパスワードを使用してSSIDを接続します
WifiConfiguration wifiConfig = new WifiConfiguration();
wifiConfig.SSID = String.format("\"%s\"", ssid);
wifiConfig.preSharedKey = String.format("\"%s\"", password);
netId = mainWifi.addNetwork(wifiConfig);
if (netId != -1) {
if (mainWifi.disconnect())
if (mainWifi.enableNetwork(netId, true))
if (mainWifi.reconnect()) {
}
}
そして、それは接続に流れなかった:
をclass WifiReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)) {
} else if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = cm.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.getType() == ConnectivityManager.TYPE_WIFI &&
networkInfo.isConnected()) {
WifiInfo wifiInfo = mainWifi.getConnectionInfo();
ssid = wifiInfo.getSSID();
//able to know Wifi connected to ssid here
}
} else if (intent.getAction().equalsIgnoreCase(WifiManager.WIFI_STATE_CHANGED_ACTION)) {
}
}
}
しかし、このSSIDでパスワードが失敗した場合はどうすればわかりますか?私はパスワードが失敗した場合、コードは次のSSIDを試みるかどうかを知りたい。しかし、パスワードの試行が失敗したことを知るためにどのアクションを使用すべきですか?現在、私はただandroid.net.wifi.STATE_CHANGE
アクションが受信し続けていることに気づいたが、それはパスワードが失敗したことを意味しない。
おかげで、私は 'WifiManagerに気づきました。 ERROR_AUTHENTICATINGは必ずしも機能しません。 –
私のために働いていません。 – AJit