2011-09-19 37 views
8

Tôi đang phát triển một ứng dụng sử dụng Wifi trong Android. Bất cứ khi nào tôi nhập sai mật khẩu trong khi kết nối với wifi, tôi không nhận được bất kỳ thông báo nào để xác thực không hợp lệ. Nó chỉ tiếp tục thử lại để kết nối. Hành vi tương tự được tìm thấy trong cài đặt không dây wifi.Lỗi xác thực Wifi trong Android

Có cách nào để xác thực Wifi không thành công không ??

WifiManager.EXTRA_SUPPLICANT_ERROR - Tôi không bao giờ có được điều này ..

Trả lời

11

Mã này hoạt động:

IntentFilter mIntentFilter = new IntentFilter(); 
mIntentFilter.addAction(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION); 
registerReceiver(receiverWifi, mIntentFilter); 


class WifiReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context c, Intent intent) { 
     String action = intent.getAction(); 
     if(action.equals(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION)){ 
      Log.d("WifiReceiver", ">>>>SUPPLICANT_STATE_CHANGED_ACTION<<<<<<"); 
      SupplicantState supl_state=((SupplicantState)intent.getParcelableExtra(WifiManager.EXTRA_NEW_STATE)); 
      switch(supl_state){ 
      case ASSOCIATED:Log.i("SupplicantState", "ASSOCIATED"); 
       break; 
      case ASSOCIATING:Log.i("SupplicantState", "ASSOCIATING"); 
       break; 
      case AUTHENTICATING:Log.i("SupplicantState", "Authenticating..."); 
       break; 
      case COMPLETED:Log.i("SupplicantState", "Connected"); 
       break; 
      case DISCONNECTED:Log.i("SupplicantState", "Disconnected"); 
       break; 
      case DORMANT:Log.i("SupplicantState", "DORMANT"); 
       break; 
      case FOUR_WAY_HANDSHAKE:Log.i("SupplicantState", "FOUR_WAY_HANDSHAKE"); 
       break; 
      case GROUP_HANDSHAKE:Log.i("SupplicantState", "GROUP_HANDSHAKE"); 
       break; 
      case INACTIVE:Log.i("SupplicantState", "INACTIVE"); 
       break; 
      case INTERFACE_DISABLED:Log.i("SupplicantState", "INTERFACE_DISABLED"); 
       break; 
      case INVALID:Log.i("SupplicantState", "INVALID"); 
       break; 
      case SCANNING:Log.i("SupplicantState", "SCANNING"); 
       break; 
      case UNINITIALIZED:Log.i("SupplicantState", "UNINITIALIZED"); 
       break; 
      default:Log.i("SupplicantState", "Unknown"); 
       break; 

      } 
      int supl_error=intent.getIntExtra(WifiManager.EXTRA_SUPPLICANT_ERROR, -1); 
      if(supl_error==WifiManager.ERROR_AUTHENTICATING){ 
       Log.i("ERROR_AUTHENTICATING", "ERROR_AUTHENTICATING!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); 
      } 
     } 
    } 
} 

<receiver 
    android:name=".MyActivity$WifiReceiver" 
    android:process=":remote" > 
</receiver> 
+1

Nó thực sự làm việc! Cảm ơn bạn! – pikabu

+1

Nó dường như không đáng tin cậy 100%. –

+1

@ahtartam Làm thế nào để biết SSID supplicantstate này đang nói về cái gì? – Javanator

Các vấn đề liên quan