我跟着following link连接本地wifi.它工作得很完美.我能够连接到我当地的wifi.
但是,我真的想要wifi的当前状态,我使用以下代码来获取wifi的状态.但不幸的是,我只能获得’禁用’,’启用’和’扫描’状态,我真的想接收其他中间状态.
你能告诉我我做错了吗?
public class ConnectionChangeReceiver extends broadcastReceiver { @OverrIDe public voID onReceive(Context context, Intent intent) { NetworkInfo info = intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO); Message msg = new Message(); msg.what = 5; Bundle b = new Bundle(); String sstatus = "UnKNown"; switch(info.getDetailedState()){ case AUTHENTICATING: sstatus = "Authenticating..."; break; case CONNECTED: sstatus = "Connected"; break; case CONNECTING: sstatus = "Connecting..."; break; case disCONNECTED: sstatus = "disconnected"; break; case disCONNECTING: sstatus = "disconnecting..."; break; case Failed: sstatus = "Failed"; break; case IDLE: sstatus = "IDle"; break; case OBTAINING_IPADDR : sstatus = "Obtaining IP Address..."; break; case SCANNING: sstatus = "Scanning..."; break; case SUSPENDED: sstatus = "Suspended"; break; } b.putString("status", sstatus); msg.setData(b); mHandler.sendMessage(msg); }}
我按以下方式注册广播接收器
IntentFilter filter = new IntentFilter( ConnectivityManager.CONNECTIVITY_ACTION); registerReceiver(networkStateReceiver, filter);
解决方法:
注册一个reciver ::
mIntentFilter = new IntentFilter(); mIntentFilter.addAction(WifiManager.SCAN_RESulTS_AVAILABLE_ACTION); mIntentFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION); mIntentFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION); mIntentFilter.addAction(WifiManager.SUPPliCANT_CONNECTION_CHANGE_ACTION); registerReceiver(mReceiver, mIntentFilter);public voID onReceive(Context context, Intent intent) { String action = intent.getAction(); if(action.equals(WifiManager.SCAN_RESulTS_AVAILABLE_ACTION)) { }else if(action.equals(WifiManager.WIFI_STATE_CHANGED_ACTION)) { int iTemp = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_UNKNowN); LogUtil.d(LOG_SET, "+++++++-----------wifiStateReceiver------+++++++", DEBUG); checkState(iTemp); }else if(action.equals(WifiManager.SUPPliCANT_CONNECTION_CHANGE_ACTION)) { DetailedState state =WifiInfo.getDetailedStateOf((SupplicantState) intent.getParcelableExtra(WifiManager.EXTRA_SUPPliCANT_CONNECTED)); changeState(state); LogUtil.d(LOG_SET, "------------>>>>SUPPliCANT_STATE_CHANGED_ACTION<<<<<<-------", DEBUG); } else if(action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) { DetailedState state= ((NetworkInfo)intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO)).getDetailedState(); changeState(state); } } private voID changeState(DetailedState aState) { LogUtil.d(LOG_SET, ">>>>>>>>>>>>>>>>>>changeState<<<<<<<<<<<<<<<<"+aState, DEBUG); if (aState == DetailedState.SCANNING) { Log.d("wifiSupplicanState", "SCANNING"); } else if (aState == DetailedState.CONNECTING) { Log.d("wifiSupplicanState", "CONNECTING"); }else if(aState == DetailedState.OBTAINING_IPADDR) { Log.d("wifiSupplicanState", "OBTAINING_IPADDR"); } else if (aState == DetailedState.CONNECTED) { Log.d("wifiSupplicanState", "CONNECTED"); } else if (aState == DetailedState.disCONNECTING) { Log.d("wifiSupplicanState", "disCONNECTING"); } else if (aState == DetailedState.disCONNECTED) { Log.d("wifiSupplicanState", "disCONNECTTED"); } else if (aState == DetailedState.Failed) { } } public voID checkState(int aInt) { LogUtil.d(LOG_SET,"==>>>>>>>>checkState<<<<<<<<"+aInt, DEBUG); if (aInt == WifiManager.WIFI_STATE_ENABliNG) { Log.d("WifiManager", "WIFI_STATE_ENABliNG"); } else if (aInt== WifiManager.WIFI_STATE_ENABLED) { Log.d("WifiManager", "WIFI_STATE_ENABLED"); } else if (aInt == WifiManager.WIFI_STATE_disABliNG) { Log.d("WifiManager", "WIFI_STATE_disABliNG"); } else if (aInt == WifiManager.WIFI_STATE_Disabled) { Log.d("WifiManager", "WIFI_STATE_Disabled"); } }
总结 以上是内存溢出为你收集整理的java – 检索wifi连接状态(Android)全部内容,希望文章能够帮你解决java – 检索wifi连接状态(Android)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)