怎样检查Android网络连接状态

在发送任何HTTP请求前最好检查下网络连接状态,这样可以避免异常。这个教程将会介绍怎样在你的应用中检测网络连接状态。


创建新的项目


1.在Eclipse IDE中创建一个新的项目并把填入必须的信息。 File->New->Android Project

2.创建新项目后的第一步是要在AndroidManifest.xml文件中添加必要的权限。

为了访问网络我们需要 INTERNET 权限 为了检查网络状态我们需要 ACCESS_NETWORK_STATE 权限 AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.detectinternetconnection"
    android:versionCode="1"
    android:versionName="1.0" >
 
    <uses-sdk android:minSdkVersion="8" />
 
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".AndroidDetectInternetConnectionActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
 
    <!-- Internet Permissions -->
    <uses-permission android:name="android.permission.INTERNET" />
 
    <!-- Network State Permissions -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
 
</manifest>

3.创建一个新的类,名为ConnectionDetector.java,并输入以下代码。

ConnectionDetector.java

package com.example.detectinternetconnection;
 
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
 
public class ConnectionDetector {
 
    private Context _context;
 
    public ConnectionDetector(Context context){
        this._context = context;
    }
 
    public boolean isConnectingToInternet(){
        ConnectivityManager connectivity = (ConnectivityManager) _context.getSystemService(Context.CONNECTIVITY_SERVICE);
          if (connectivity != null)
          {
              NetworkInfo[] info = connectivity.getAllNetworkInfo();
              if (info != null)
                  for (int i = 0; i < info.length; i++)
                      if (info[i].getState() == NetworkInfo.State.CONNECTED)
                      {
                          return true;
                      }
 
          }
          return false;
    }
}

4.当你需要在你的应用中检查网络状态时调用isConnectingToInternet()函数,它会返回true或false。

ConnectionDetector cd = new ConnectionDetector(getApplicationContext());
 
Boolean isInternetPresent = cd.isConnectingToInternet(); // true or false

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/pxgpx.html