平时开发过程中,可能需要对Android的当前网络做判断。判断其是否是wifi网络,或者是否是移动数据网络。为什么需要判断当前网络类型。比如音乐播放器,当用户想要下载某首歌的时候,如果是移动数据网络就需要提醒用户当前是移动数据网络,继续下载将会消耗移动数据流量,产生流量费等等。这样会显得比较友好,用户体验也相对较好。如果是WIFI网络就直接下载。下面提供一个简单的工具类,用来判断当前网络是否可用,以及当前网络类型。
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
/**
* 网络操作相关
* @author syz
* @date 2016-7-11
*/
public class NetWorkUtils {
/**
* 检查当前网络是否可用
* @param context
* @return
*/
public static boolean isNetworkAvailable(Context context){
boolean isAvailable = false;
ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = manager.getActiveNetworkInfo();
if(networkInfo != null && networkInfo.isAvailable()){
isAvailable = true;
}
return isAvailable;
}
/**
* 检查wifi是否可用
* @param context
* @return
*/
public static boolean isWifiConnected(Context context){
boolean isConnected = false;
ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = manager.getActiveNetworkInfo();
if(networkInfo != null && networkInfo.getType() == ConnectivityManager.TYPE_WIFI){
isConnected = true;
}
return isConnected;
}
/**
* 当前网络是否是移动数据网络
* @param context
* @return
*/
public static boolean isMobileConnected(Context context){
boolean isMobile = false;
ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = manager.getActiveNetworkInfo();
if(info != null && info.getType() == ConnectivityManager.TYPE_MOBILE){
isMobile = true;
}
return isMobile;
}
/**
* 获取当前网络连接类型
* @param context
* @return
*/
public static int getConnectionType(Context context){
int networkType = -1;
ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = manager.getActiveNetworkInfo();
if(info != null){
networkType = info.getType();
}
return networkType;
}
}