转:Android判断当前网络是否可用--示例代码

在Android平台上开发基于网络的应用,必然需要去判断当前的网络连接情况。下面的代码,作为例子,详细说明了对于当前网络情况的判断。

 

先看一个自己定义的应用类。

 

 

  1. <STRONG>public class NetworkDetector {   
  2.     
  3.     public static boolean detect(Activity act) {   
  4.          
  5.        ConnectivityManager manager = (ConnectivityManager) act   
  6.               .getApplicationContext().getSystemService(   
  7.                      Context.CONNECTIVITY_SERVICE);   
  8.          
  9.        if (manager == null) {   
  10.            return false;   
  11.        }   
  12.          
  13.        NetworkInfo networkinfo = manager.getActiveNetworkInfo();   
  14.          
  15.        if (networkinfo == null || !networkinfo.isAvailable()) {   
  16.            return false;   
  17.        }   
  18.     
  19.        return true;   
  20.     }   
  21. }</STRONG>  
public class NetworkDetector {
 
    public static boolean detect(Activity act) {
      
       ConnectivityManager manager = (ConnectivityManager) act
              .getApplicationContext().getSystemService(
                     Context.CONNECTIVITY_SERVICE);
      
       if (manager == null) {
           return false;
       }
      
       NetworkInfo networkinfo = manager.getActiveNetworkInfo();
      
       if (networkinfo == null || !networkinfo.isAvailable()) {
           return false;
       }
 
       return true;
    }
}

 

 

 

这个类只有一个静态方法,用来检测当前系统的网络是否可用。如果可用,返回true。

还要进一步说明的是,NetworkInfo类中有一个方法getType(),这个方法可以用来判断当前可用的网络是wifi,还是mobile等等。

 

再来看使用的例子。

 

 

  1. boolean networkState = NetworkDetector.detect(XXXActivity.this);   
  2. if (!networkState) {   
  3.     DialogUtil.openMsgDialog(XXXActivity.this,   
  4.            android.R.drawable.ic_dialog_info,   
  5.            “网络不可用,是否现在设置网络?”, android.R.string.ok,   
  6.            android.R.string.cancel,   
  7.            new DialogInterface.OnClickListener() {   
  8.               @Override  
  9.               public void onClick(DialogInterface dialog, int which) {   
  10.                   startActivityForResult(new Intent(   
  11.                          ACTION_WIRELESS_SETTINGS), 0);   
  12.               }   
  13.            }, new DialogInterface.OnClickListener() {   
  14.               @Override  
  15.               public void onClick(DialogInterface dialog, int which) {   
  16.                   dialog.cancel();   
  17.               }   
  18.            }).show();   
  19. }  
       boolean networkState = NetworkDetector.detect(XXXActivity.this);
       if (!networkState) {
           DialogUtil.openMsgDialog(XXXActivity.this,
                  android.R.drawable.ic_dialog_info,
                  “网络不可用,是否现在设置网络?”, android.R.string.ok,
                  android.R.string.cancel,
                  new DialogInterface.OnClickListener() {
                     @Override
                     public void onClick(DialogInterface dialog, int which) {
                         startActivityForResult(new Intent(
                                ACTION_WIRELESS_SETTINGS), 0);
                     }
                  }, new DialogInterface.OnClickListener() {
                     @Override
                     public void onClick(DialogInterface dialog, int which) {
                         dialog.cancel();
                     }
                  }).show();
       }

 

 

 

其中XXXActivity是我自己的Activity类,DialogUtil是我自己定义的Dialog应用类。这里的代码片段,是在判断没有网络的情况下,弹出dialog,提示用户是否进入系统的网络设置界面。

 

因为以上代码用到了权限,需要在AndroidManifest文件中加入如下权限代码:

    <uses-permission

       android:name="android.permission.ACCESS_NETWORK_STATE" />

转载于:https://www.cnblogs.com/wangqiuli5552/articles/2524110.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值