wifi连接状态android,java – 检索wifi连接状态(Android)

我跟着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<<<<<

}

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<<<<<<<<<<<<<<<

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<<<<<<<

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,android,wifi

来源: https://codeday.me/bug/20190712/1442236.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值