2012-09-08 21 views
4

我打算做一個應用程序,檢查某個wifi網絡是否使用通用密碼。我有一個最常見的密碼列表,但具有以下功能:Android - 查看wifi的密碼是否正確

public boolean connectTo(String psKey){ 
    WifiConfiguration wc = new WifiConfiguration(); 
    wc.SSID = "\"" + dbw.getSsid() + "\""; 
    wc.preSharedKey = "\"" + psKey + "\""; 

    wc.status = WifiConfiguration.Status.ENABLED; 
    wc = configureCapabs(wc, dbw.getCapability()); 

    int res = wifi.addNetwork(wc); 
    Toast.makeText(this, "add Network returned " + res , Toast.LENGTH_SHORT).show(); 
    boolean b = wifi.enableNetwork(res, true);   
    Toast.makeText(this, "enableNetwork returned " + b , Toast.LENGTH_SHORT).show(); 
    if(!b) return false; 
    boolean fin = /*b ? wifi.reassociate() : */wifi.reconnect(); 
    return fin; 
} 

它返回true,即使密碼不正確。有沒有辦法檢查我嘗試登錄的密碼是否被接受或拒絕?

回答

3

您正在使用的WiFiManagerreconnect()/reassociate()方法來檢查天氣或沒有連接成功,但布爾值,他們返回意味着別的東西。返回的值僅告訴您有關啓動給定操作的結果。這是因爲關聯並連接到WiFi網絡需要時間。然而,這些方法將立即返回並且不會阻止。連接或關聯網絡的實際任務是在後臺異步完成的。

您可以監視什麼用通過監聽到一個特定的系統範圍內的廣播WiFi連接發生的事情:

<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/> 
<action android:name="android.net.wifi.STATE_CHANGE"/> 

您可以找到有關這個HERE更多信息 - 檢查託斯滕的答案。

0

至於檢查密碼是否被返回值接受或拒絕,我實際上並不知道我能想到兩種可能的替代策略可能淨化相同的結果?

不是100%確定,因爲我以前沒有做過,但是我想知道是否ping請求者會起作用?

http://developer.android.com/reference/android/net/wifi/WifiManager.html#pingSupplicant()

無論是或檢查,如果你現在有一個IP地址?

http://developer.android.com/reference/android/net/wifi/WifiInfo.html