4

特定の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 を返します。ログインしようとしたパスワードが受け入れられたか拒否されたかを確認する方法はありますか?

4

2 に答える 2

5

reconnect()の/reassociate()メソッドを使用してWiFiManager天気を確認しているか、接続が成功していないかを確認していますが、それらが返すブール値は別の意味を持っています。返された値は、特定の操作を開始した結果についてのみ通知します。これは、WiFi ネットワークへの関連付けと接続に時間がかかるためです。ただし、これらのメソッドはすぐに返され、ブロックされません。ネットワークに接続または関連付ける実際のタスクは、バックグラウンドで非同期に実行されます。

特定のシステム全体のブロードキャストを聞くことで、WiFi 接続で何が起こっているかを監視できます。

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

この詳細については、こちらを参照してください - Torsten の回答を確認してください。

于 2012-09-08T21:10:22.983 に答える
0

戻り値を介してパスワードが受け入れられたか拒否されたかを確認する限り、実際にはわかりませんが、同じ結果をもたらす可能性のある2つの「可能な」代替戦略を考えることができますか?

以前に行ったことがないので 100% 確実ではありませんが、サプリカントに ping を実行するとうまくいくのでしょうか?

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

それか、今IPアドレスを持っているかどうかを確認しますか?

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

于 2012-09-08T21:04:34.787 に答える