6

私は受信機を登録していonResume()ます:

registerReceiver(wifiConnectivityReceiver, new
                IntentFilter(WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION));

これは受信機自体です:

class WiFiConnectivityReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getBooleanExtra(WifiManager.EXTRA_SUPPLICANT_CONNECTED,false)){
            Log.d(TAG,"Connected to network!");
        } else {
            Log.d(TAG,"Could not connect to network!");
        }
    }
}

私のアプリケーションでは、選択したWiFiネットワークに接続できますが、これSUPPLICANT_CONNECTION_CHANGE_ACTIONが起動されることはありません。たとえば、に変更するとSUPPLICANT_STATE_CHANGED_ACTION、機能します。

私はICSに取り組んでいます。
他の誰かがこの意図でこのような問題を経験しましたか?

4

2 に答える 2

4

次のコードが役立つと思います。

public void installMyReceiver(){
    if (I) Log.i(TAG, "installMyReceiver() - Online");
    mFlag = true;


    myReceiver = new BroadcastReceiver(){
        public void onReceive (Context context, Intent intent){
            String action = intent.getAction();

            if (WifiManager.SUPPLICANT_STATE_CHANGED_ACTION.equals(action)){

                SupplicantState supplicantState = (SupplicantState)intent.getParcelableExtra(WifiManager.EXTRA_NEW_STATE);
                if (supplicantState == (SupplicantState.COMPLETED)){
                    if (I) Log.i(TAG, "SUPPLICANTSTATE ---> Connected");
                      //do something
                }

                if (supplicantState == (SupplicantState.DISCONNECTED)){
                    if (I) Log.i(TAG, "SUPPLICANTSTATE ---> Disconnected");
                       //do something
                }

            }
        }
    };

    IntentFilter mFilter = new IntentFilter (WifiManager.SUPPLICANT_STATE_CHANGED_ACTION);
    this.registerReceiver (myReceiver, mFilter);
}

必要な情報を取得して、何らかのアクションを実行する簡単な方法です。お役に立てば幸いです。

于 2013-09-15T19:15:17.007 に答える