SystemService 学习笔记之ConnectivityManager

本文介绍了Android中ConnectivityManager的使用,包括通过Context.getSystemService(Context.CONNECTIVITY_SERVICE)获取服务,并需添加ACCESS_NETWORK_STATE权限。讲解了getAllNetworkInfo()、getActiveNetworkInfo()以及getNetworkInfo(int networkType)等关键方法,探讨了不同网络类型如TYPE_WIFI和TYPE_MOBILE的获取方式。


ConnectivityManager功能:监视网络连接状态

通过context.getSystemService(Context.CONNECTIVITY_SERVICE);方法获取,

需要添加权限 :android.permission.ACCESS_NETWORK_STATE

常用方法:

1.getAllNetworkInfo() //获取所有网络连接信息

2.getActiveNetworkInfo()// 获取正连接的网络的信息

3.getNetworkInfo(int networkType)//获取指定的网络连接类型的信息

    networkType的类型有:ConnectivityManage.TYPE_WIFI;ConnectivityManage.TYPE_MOBILE 等

getAllNetworkInfo()实例:

	public static boolean isNetworkAvailable(Activity mActivity){
		Context context = mActivity.getApplicationContext();
		
		ConnectivityManager connectivity = (ConnectivityManager)context.getSystemService(
				Context.CONNECTIVITY_SERVICE);
		
		if(connectivity == null){
			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){
						return true;
					}
				}
			}
		}
		return false;
	}

getActiveNetworkInfo()实例:

	  public static boolean isNetworkAvailable(Activity mActivity){
		  Context context = mActivity.getApplicationContext();

		  ConnectivityManager connectivity = (ConnectivityManager)context.getSystemService(
		  Context.CONNECTIVITY_SERVICE);
		  NetworkInfo networkInfo = connectivity.getActiveNetworkInfo();  
		   // 获取当前的网络连接是否可用  
		    //网络类型的判断networkInfo.getType()==ConnectivityManager.TYPE_MOBILE
		  	if(networkInfo.isAvailable())
		  		return true;
		  	else
		  		return false;

 getNetworkInfo(int networkType)实例:

	public static boolean isNetworkAvailable(Activity mActivity){
	Context context = mActivity.getApplicationContext();
		  			
	ConnectivityManager connectivity = (ConnectivityManager)context.getSystemService(
		  	Context.CONNECTIVITY_SERVICE);
	if(State.CONNECTED==connectivity.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState())
		  	return true;
	if(State.CONNECTED==connectivity.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState())
		  return true;
	else	  			  
	    return false;
		  			
		  		}

  State的六种状态:
 public static final NetworkInfo.State CONNECTED

 public static final NetworkInfo.State CONNECTING

 public static final NetworkInfo.State DISCONNECTED

 public static final NetworkInfo.State DISCONNECTING

 public static final NetworkInfo.State SUSPENDED

 public static final NetworkInfo.State UNKNOWN



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值