本次学习都以android-23版本为例子
路径:
...\sdk\samples\android-23\connectivity\BasicNetworking
描述
检测网络是否连接,并区分为wifi还是移动网络连接
知识点
权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
/**
* Check whether the device is connected, and if so, whether the connection
* is wifi or mobile (it could be something else).
*/
private void checkNetworkConnection() {
ConnectivityManager connMgr =
(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeInfo = connMgr.getActiveNetworkInfo();
if (activeInfo != null && activeInfo.isConnected()) {
wifiConnected = activeInfo.getType() == ConnectivityManager.TYPE_WIFI;
mobileConnected = activeInfo.getType() == ConnectivityManager.TYPE_MOBILE;
if(wifiConnected) {
Log.i(TAG, getString(R.string.wifi_connection));
} else if (mobileConnected){
Log.i(TAG, getString(R.string.mobile_connection));
}
} else {
Log.i(TAG, getString(R.string.no_wifi_or_mobile));
}
}
首先获取到ConnectivityManager实例:
ConnectivityManager connMgr =
(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
再拿到网络信息NetworkInfo
NetworkInfo activeInfo = connMgr.getActiveNetworkInfo();
通过activeInfo.isConnected()
来判断是否有网络连接
if (activeInfo != null && activeInfo.isConnected()) {
//有网络连接
} else {
//无网络连接
}
如果只要判断app是否联网的话,到这一步已经够了,需要继续细分为wifi网络环境还是移动网络环境的话,还需要做一下判断
if(activeInfo.getType() == ConnectivityManager.TYPE_WIFI){
//wifi环境
}
if(activeInfo.getType() == ConnectivityManager.TYPE_MOBILE){
//移动网络环境
}