判断手机网络连接状态

本文介绍了一种在Android应用中检查设备网络状态的方法。包括检查WIFI和移动数据连接状态,读取APN信息,并根据需要设置网络代理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    注释:获取手机的网络状态信息需要添加权限
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

	/**
	 * 检查网络是否连接
	 * @param context
	 * @return
	 */
	public static boolean checkNet(Context context) {

		// 检查WIFI
		boolean isWIFI = isWIFIConnection(context);
		// 检查MOBILE
		boolean isMOBILE = isMOBILEConnection(context);
		// 检查APN信息
		readAPN(context);

		if(!isWIFI && !isMOBILE){
			return true;
		}
		
		return false;
	}

	private String proxy;
	/**
	 * 检查APN信息;如果用户所用的是wap方式连接的网络,
         * 则在连接网络的时候需要设置代理的ip和端口号port 见方法setAPN()
	 */
	private static void readAPN(Context context) {
		ContentResolver resolver = context.getContentResolver();
		Uri uri = Uri.parse("content://telephony/carriers/preferapn");//4.0模拟器屏蔽掉了此权限
		Cursor cursor = resolver.query(uri , null, null, null, null);
		if(cursor != null && cursor.moveToFirst()){
                        //得到代理的ip
			proxy = cursor.getString(cursor.getColumnIndex("proxy"));
			//得到代理的端口
                        int prot = cursor.getInt(cursor.getColumnIndex("port"));
		}

	}
	
	/**
	*设置代理的ip和端口号port 
	*
	*/
	public static void setAPN(){
	    DefaultHttpClient client = new DefaultHttpClient();
	    // 判断是否需要设置代理信息
	    if (StringUtils.isNotBlank(proxy)) {
		HttpHost host = new HttpHost(GlobalParams.PROXY, GlobalParams.PORT);
		client.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, host);
	    }
	}

	/**
	 * 检查MOBILE连接
	 * 
	 * @return
	 */
	private static boolean isMOBILEConnection(Context context) {
		ConnectivityManager manager = (ConnectivityManager) context
				.getSystemService(context.CONNECTIVITY_SERVICE);
		NetworkInfo networkInfo = manager
				.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
		if (networkInfo != null) {
			return networkInfo.isConnected();
		}
		return false;
	}

	/**
	 * 检查WIFI连接
	 * 
	 * @return
	 */
	private static boolean isWIFIConnection(Context context) {
		ConnectivityManager manager = (ConnectivityManager) context
				.getSystemService(context.CONNECTIVITY_SERVICE);
		NetworkInfo networkInfo = manager
				.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
		if (networkInfo != null) {
			return networkInfo.isConnected();
		}
		return false;
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值