加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Android 检查网络连接状态的代码实现

发布时间:2020-12-14 23:50:45 所属栏目:Java 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" / public boolean isNetworkConnected(Context context) { if (context !=

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
public boolean isNetworkConnected(Context context) { 
if (context != null) { 
ConnectivityManager mConnectivityManager = (ConnectivityManager) context 
.getSystemService(Context.CONNECTIVITY_SERVICE); 
NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo(); 
if (mNetworkInfo != null) { 
return mNetworkInfo.isAvailable(); 
} 
} 
return false; 
}
public boolean isWifiConnected(Context context) { 
if (context != null) { 
ConnectivityManager mConnectivityManager = (ConnectivityManager) context 
.getSystemService(Context.CONNECTIVITY_SERVICE); 
NetworkInfo mWiFiNetworkInfo = mConnectivityManager 
.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 
if (mWiFiNetworkInfo != null) { 
return mWiFiNetworkInfo.isAvailable(); 
} 
} 
return false; 
}
public boolean isMobileConnected(Context context) { 
if (context != null) { 
ConnectivityManager mConnectivityManager = (ConnectivityManager) context 
.getSystemService(Context.CONNECTIVITY_SERVICE); 
NetworkInfo mMobileNetworkInfo = mConnectivityManager 
.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 
if (mMobileNetworkInfo != null) { 
return mMobileNetworkInfo.isAvailable(); 
} 
} 
return false; 
}
public static int getConnectedType(Context context) { 
if (context != null) { 
ConnectivityManager mConnectivityManager = (ConnectivityManager) context 
.getSystemService(Context.CONNECTIVITY_SERVICE); 
NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo(); 
if (mNetworkInfo != null && mNetworkInfo.isAvailable()) { 
return mNetworkInfo.getType(); 
} 
} 
return -1; 
}
connectionReceiver = new BroadcastReceiver() { 
@Override 
public void onReceive(Context context,Intent intent) { 
ConnectivityManager connectMgr = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE); 
NetworkInfo mobNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 
NetworkInfo wifiNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 
if (!mobNetInfo.isConnected() && !wifiNetInfo.isConnected()) { 
Log.i(TAG,"unconnect"); 
// unconnect network 
}else { 
// connect network 
} 
} 
};
IntentFilter intentFilter = new IntentFilter();
 intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
 registerReceiver(connectionReceiver,intentFilter);
if (connectionReceiver != null) {
 unregisterReceiver(connectionReceiver);
 }
final TelephonyManager mTelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 
mTelephonyMgr.listen(new PhoneStateListener(){ 
@Override 
public void onDataConnectionStateChanged(int state) { 
switch(state){ 
case TelephonyManager.DATA_DISCONNECTED://网络断开 
break; 
case TelephonyManager.DATA_CONNECTING://网络正在连接 
break; 
case TelephonyManager.DATA_CONNECTED://网络连接上 
break; 
} 
} 
},PhoneStateListener.LISTEN_DATA_CONNECTION_STATE);
public static boolean isNetworkAvailable(Context context) { 
ConnectivityManager connectivity = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); 
if (connectivity == null) { 
Log.i("NetWorkState","Unavailabel"); 
return false; 
} else { 
NetworkInfo[] info = connectivity.getAllNetworkInfo(); 
if (info != null) { 
for (int i = 0; i < info.length; i++) { 
if (info[i].getState() == NetworkInfo.State.CONNECTED) { 
Log.i("NetWorkState","Availabel"); 
return true; 
} 
} 
} 
} 
return false; 
}
@Override 
public void onReceive(Context context,Intent intent) { 
Log.e(TAG,"网络状态改变"); 
boolean success = false; 
//获得网络连接服务 
ConnectivityManager connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE); 
// State state = connManager.getActiveNetworkInfo().getState(); 
State state = connManager.getNetworkInfo( 
ConnectivityManager.TYPE_WIFI).getState(); // 获取网络连接状态 
if (State.CONNECTED == state) { // 判断是否正在使用WIFI网络 
success = true; 
} 
state = connManager.getNetworkInfo( 
ConnectivityManager.TYPE_MOBILE).getState(); // 获取网络连接状态 
if (State.CONNECTED != state) { // 判断是否正在使用GPRS网络 
success = true; 
} 
if (!success) { 
Toast.makeText(LocationMapActivity.this,"您的网络连接已中断",Toast.LENGTH_LONG).show(); 
} 
}
//注册网络监听 
IntentFilter filter = new IntentFilter(); 
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); 
registerReceiver(mNetworkStateReceiver,filter); 
//在Activity中的onDestroy中:' 
unregisterReceiver(mNetworkStateReceiver); //取消监听
/** 
* @author sky 
* Email [email?protected] 
* QQ:840950105 
* 获取当前的网络状态 -1:没有网络 1:WIFI网络2:wap网络3:net网络 
* @param context 
* @return 
*/ 
public static int getAPNType(Context context){ 
int netType = -1; 
ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo(); 
if(networkInfo==null){ 
return netType; 
} 
int nType = networkInfo.getType(); 
if(nType==ConnectivityManager.TYPE_MOBILE){ 
Log.e("networkInfo.getExtraInfo()","networkInfo.getExtraInfo() is "+networkInfo.getExtraInfo()); 
if(networkInfo.getExtraInfo().toLowerCase().equals("cmnet")){ 
netType = CMNET; 
} 
else{ 
netType = CMWAP; 
} 
} 
else if(nType==ConnectivityManager.TYPE_WIFI){ 
netType = WIFI; 
} 
return netType; 
}

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读