Android实践--监測网络状态

本文介绍如何在Android应用中检查网络状态,包括WIFI和移动数据的连接情况,并提供了实现代码示例。此外还展示了如何在没有网络连接时引导用户进入系统设置。
Android 监測网络状态
     我们在使用Android手机时候,一些APP须要网络环境才干执行,所以手机须要 可用的网络,无论是2G、3G或者WIFI。甚至有一些比較耗流量的APP仅仅能在WIFI的环境下执行,或者提供用户自行选择是否仅仅能在WIFI环境下执行,作为用户貌似后者体验更好。那么作为开发人员,我们仅仅须要几步就能给用户这样的体验。
-----------------------------------------------------------------------------------------------------------------------------
1.权限加入:APP须要联网。以及须要訪问网络状态,所以在AndroidManifest.xml中加入权限。
    <uses-permission android:name= "android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
2.状态获取:手机网络有数据(2G/3G/4G)连接、WIFI连接两种状态,能够区分获取和笼统的获取。

	/**
	 * 检查WIFI是否连接
	 * 
	 * @author Ysjian
	 * @date 2014-5-9
	 * @return 假设连接了返回true,否则返回false
	 */
	public boolean isWifiConnected() {
		ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
		NetworkInfo wifiInfo = connectivityManager
				.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
		return wifiInfo != null;
	}
	/**
	 * 检查手机网络(4G/3G/2G)是否连接
	 * 
	 * @author Ysjian
	 * @date 2014-5-9
	 * @return 假设连接了返回true,否则返回false
	 */
	public boolean isMobileNetworkConnected() {
		ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
		NetworkInfo mobileNetworkInfo = connectivityManager
				.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
		return mobileNetworkInfo != null;
	}
	/**
	 * 检查是否有可用网络
	 * 
	 * @author Ysjian
	 * @date 2014-5-9
	 * @return 存在WIFI和手机数据随意可用网络返回true。否则返回false
	 */
	public boolean hasActivityNetwork() {
		ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
		return connectivityManager.getActiveNetworkInfo() != null;
	}
3.跳转设置:假设没有网络,跳转到网络设置界面。能够依据详细需求调用上面的三个方法之中的一个来推断网络状态。
if (!hasActivityNetwork()) {
       AlertDialog.Builder builder = new AlertDialog.Builder(this );
       builder. setTitle( "没有可用的网络" )
                   .setMessage( "是否对网络进行设置?" )
                   .setPositiveButton( "是" ,
                         new DialogInterface.OnClickListener() {
                                     @Override
                                     public void onClick(DialogInterface dialog,int which) {
                                               Intent intent = null ;
                                               intent = newIntent(android.provider.Settings.ACTION_WIRELESS_SETTINGS);
                                               startActivity(intent);
                                     }
                     })
                    .setNegativeButton( "否" ,
                           new DialogInterface.OnClickListener() {
                                   @Override
                                    public void onClick(DialogInterface dialog, int which) {
                                               dialog.dismiss();
                                     }
                           }).show();
}
文章来源: http://blog.youkuaiyun.com/ysjian_pingcx/article/details/25461053

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值