Android 检测网络连接状态(转)

转自:http://blog.csdn.net/sunboy_2050/article/details/7896313

Android连接网络的时候,并不是每次都能连接到网络,因此在程序启动中需要对网络的状态进行判断,如果没有网络则提醒用户进行设置。

首先,要判断网络状态,需要有相应的权限,下面为权限代码(AndroidManifest.xml):

 

  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  <uses-permission android:name="android.permission.INTERNET"/>

 

然后,检测网络状态是否可用

/** 
 * 对网络连接状态进行判断 
 * @return  true, 可用; false, 不可用 
 */  
private boolean isOpenNetwork() {  
    ConnectivityManager connManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);  
  NetworkInfo networkInfo =
connManager.getActiveNetworkInfo();

if(networkInfo!= null) {
    //2.获取当前网络连接的类型信息
         int  networkType = networkInfo.getType();
         if (ConnectivityManager.TYPE_WIFI == networkType){
         //当前为wifi网络
      } else   if (ConnectivityManager.TYPE_MOBILE == networkType){
        //当前为mobile网络
    }
return connManager.getActiveNetworkInfo().isAvailable(); }
 
return false;  
}  

最后,不可用则打开网络设置

/** 
 * 访问百度主页,网络不可用则需设置 
 */  
private void initMoreGames() {  
    String URL_MOREGAMES = "http://www.baidu.com";  
    mWebView = (WebView) findViewById(R.id.view_gamesort);  
  
    if (mWebView != null) {  
        mWebView.requestFocus();  
        WebSettings webSettings = mWebView.getSettings();  
        if (webSettings != null) {  
            webSettings.setJavaScriptEnabled(true);  
            webSettings.setCacheMode(MODE_PRIVATE);  
            webSettings.setDefaultTextEncodingName("utf-8");  
        }  
  
        // 判断网络是否可用  
        if(isOpenNetwork() == true) {  
            mWebView.loadUrl(URL_MOREGAMES);  
        } else {  
            AlertDialog.Builder builder = new AlertDialog.Builder(MoreGamesActivity.this);  
            builder.setTitle("没有可用的网络").setMessage("是否对网络进行设置?");  
              
            builder.setPositiveButton("", new DialogInterface.OnClickListener() {  
                @Override  
                public void onClick(DialogInterface dialog, int which) {  
                    Intent intent = null;  
                      
                    try {  
                        String sdkVersion = android.os.Build.VERSION.SDK;  
                        if(Integer.valueOf(sdkVersion) > 10) {  
                            intent = new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS);  
                        }else {  
                            intent = new Intent();  
                            ComponentName comp = new ComponentName("com.android.settings", "com.android.settings.WirelessSettings");  
                            intent.setComponent(comp);  
                            intent.setAction("android.intent.action.VIEW");  
                        }  
                        MoreGamesActivity.this.startActivity(intent);  
                    } catch (Exception e) {  
                        Log.w(TAG, "open network settings failed, please check...");  
                        e.printStackTrace();  
                    }  
                }  
            }).setNegativeButton("", new DialogInterface.OnClickListener() {  
                @Override  
                public void onClick(DialogInterface dialog, int which) {  
                    dialog.cancel();          
                    finish();  
                }  
            }).show();  
        }  
    } else {  
        Log.w(TAG, "mWebView is null, please check...");  
    }  
}  

 

转自http://hi.baidu.com/janksenhu/item/a0042347d7161eaedf2a9fa6

 

"MOBILE";//移动数据连接,不能与连接共存,如果wifi打开,则自动关闭

"WIFI";//wifi服务,当激活时,默认情况下,所有的数据流量将使用此连接。

"MOBILE_MMS";//运营商的多媒体消息服务

"MOBILE_SUPL";//平面定位特定移动数据连接

"MOBILE_DUN";//网络桥接,很老的一个网络

"MOBILE_HIPRI";//高优先级的移动数据连接。相同的为{TYPE_MOBILE},但路由的设置是不同的。只有请求的进程将有机会获得移动的DNS服务器。

"WIMAX";//全球互通微波存取数据连接

"BLUETOOTH";//蓝牙

"DUMMY";//虚拟连接

"ETHERNET";//以太网 

"MOBILE_FOTA";

"MOBILE_IMS";

"MOBILE_CBS";

"WIFI_P2P";//通过wifi直连wifi

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值