做一个应用需要控制手机连接某一个AP,用了:
boolean connected = mWifiAdmin.Connect(ssid, passwd, 3);
其中Connect的实现如下:
public boolean Connect(String SSID, String Password, int Type) {
WifiConfiguration wifiConfig = CreateWifiInfo(SSID, Password, Type); if (wifiConfig == null) {
Log.d(TAG, "wifiConfig==null");
return false;
} WifiConfiguration tempConfig = this.IsExsits(SSID); if (tempConfig != null) {
mWifiManager.removeNetwork(tempConfig.networkId);
}
int netID = mWifiManager.addNetwork(wifiConfig);

boolean bRet = mWifiManager.enableNetwork(netID, true);
return bRet;
}每次连接的时候Connect立刻就返回了,这个时候需要根据connected的值在界面显示对于的状态,可是实际上手机该ssid之间的连接还没有完成,因为正如我们手机上面的wifi设置,连接一个wifi的时候都需要几秒的时间才能连接上。请问如何判断手机与这个ssid真正连接完成了呢?

解决方案 »

  1.   

    收系统的intent。 183         mFilter = new IntentFilter();
     184         mFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
     185         mFilter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
     186         mFilter.addAction(WifiManager.NETWORK_IDS_CHANGED_ACTION);
     187         mFilter.addAction(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION);
     188         mFilter.addAction(WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION);
     189         mFilter.addAction(WifiManager.LINK_CONFIGURATION_CHANGED_ACTION);
     190         mFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
     191         mFilter.addAction(WifiManager.RSSI_CHANGED_ACTION);
      

  2.   

    参考Settings app的code就行了。 private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                String action = intent.getAction();
                if (WifiManager.WIFI_STATE_CHANGED_ACTION.equals(action)) {
                    handleWifiStateChanged(intent.getIntExtra(
                            WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_UNKNOWN));
                } else if (WifiManager.SUPPLICANT_STATE_CHANGED_ACTION.equals(action)) {
                    if (!mConnected.get()) {
                        handleStateChanged(WifiInfo.getDetailedStateOf((SupplicantState)
                                intent.getParcelableExtra(WifiManager.EXTRA_NEW_STATE)));
                    }
                } else if (WifiManager.NETWORK_STATE_CHANGED_ACTION.equals(action)) {
                    NetworkInfo info = (NetworkInfo) intent.getParcelableExtra(
                            WifiManager.EXTRA_NETWORK_INFO);
                    mConnected.set(info.isConnected());
                    handleStateChanged(info.getDetailedState());
                }
            }
        };
      

  3.   


    Context context = Mainactivity.this.getApplicationContext();
    WifiManager wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
    if (!wifiManager.isWifiEnabled()){
    //连接成功了,你要执行的操作
    }