当前位置: 代码迷 >> Android >> Android实践-监测网络状态
  详细解决方案

Android实践-监测网络状态

热度:86   发布时间:2016-04-28 05:45:02.0
Android实践--监测网络状态
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.csdn.net/ysjian_pingcx/article/details/25461053

  相关解决方案