当前位置: 代码迷 >> Android >> 请问怎么判断wifi是否连接上网络了
  详细解决方案

请问怎么判断wifi是否连接上网络了

热度:20   发布时间:2016-04-28 07:54:18.0
请教如何判断wifi是否连接上网络了
wifi打开,连接到网络获得了IP才算连接上,有办法在activity启动的时候判断吗?
另外有没有办法监听断开了wifi网络连接和连接上了wifi网络连接?

------解决方案--------------------
判断WIFI是否连接:
ConnectivityManager manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
State wifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
if(wifi == State.CONNECTED){
//WIFI已连接
}


监听WifiManager.NETWORK_STATE_CHANGED_ACTION可以获取WIFI网络连接状态改变的广播
监听WifiManager.WIFI_STATE_CHANGED_ACTION可以获取WIFI状态改变的广播(打开、关闭、正在打开、正在关闭、未知)。
	@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
System.out.println(intent.getAction());
if(intent.getAction().equals(WifiManager.RSSI_CHANGED_ACTION))
{
//信号强度改变
int strength=getStrength(context);
System.out.println("当前信号 "+strength);
}else if(intent.getAction().equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)){
System.out.println("网络状态改变");
NetworkInfo info=intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
if(info.getState().equals(NetworkInfo.State.DISCONNECTED))
{
//WIFI网络断开
} else if(...){
//其他状态
}
}else if(intent.getAction().equals(WifiManager.WIFI_STATE_CHANGED_ACTION))
{
//WIFI开关
int wifistate=intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE,WifiManager.WIFI_STATE_DISABLED);
if(wifistate==WifiManager.WIFI_STATE_DISABLED)
{
//WIFI关闭
} else if(...){
//其他状态
}
}
 
}


需要权限:
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

------解决方案--------------------
引用:
今天定制了一个10元流量包测试了一下,联通3G打开和关闭,不触发NETWORK_STATE_CHANGED_ACTION,[email protected],祝节日快乐!

WifiManager.NETWORK_STATE_CHANGED_ACTION只是用来判断WIFI网络连接状态的,移动网络连接状态的改变不会发送这个广播。
  相关解决方案