android中的网络检查功能?

时间:2011-05-05 11:34:42

标签: android android-layout

我使用以下代码检查网络可用性,同时点击远程服务或访问任何网页,因为我会在每次点击Web服务之前调用此方法,但我需要任何监视器定期监视Web服务背景和投掷警报网络不可用,如果网络恢复它网络恢复警报网络,我不知道如何实现它。

public boolean isOnline(Context context) 
{
    boolean state=false;
    ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo wifiNetwork = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
    if (wifiNetwork != null) {
       state=wifiNetwork.isConnectedOrConnecting();
    }

    NetworkInfo mobileNetwork = cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
    if (mobileNetwork != null) {
       state=mobileNetwork.isConnectedOrConnecting();
    }

    NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
    if (activeNetwork != null) {
       state=activeNetwork.isConnectedOrConnecting();
    }

    return state;
}

2 个答案:

答案 0 :(得分:2)

为此您需要实现广播接收器,它将检查后台的网络连接,并在网络连接时发出警报。

请尝试以下代码。

1)制作一个可以扩展brodcast接收器的课程。

public class CheckInternetConnectionChangeReceiver extends BroadcastReceiver 
{
public static boolean connectionStatus = false;

@Override
public void onReceive(Context context, Intent intent) 
{
    connectionStatus = CheckInternetConnection(context);
    if(connectionStatus)
        Toast.makeText(context, "Internet Connection Available", Toast.LENGTH_LONG).show();
    else
        Toast.makeText(context, "Internet Connection Not Available", Toast.LENGTH_LONG).show();
}

public boolean CheckInternetConnection(Context context)
{
    ConnectivityManager connec = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    android.net.NetworkInfo wifi = connec.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
    android.net.NetworkInfo mobile = connec.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

    if (wifi.isConnected()) 
    {
        return true;
    } 
    else if (!mobile.isConnected()) 
    {
        return false;
    } 
    else if (mobile.isConnected()) 
    {
        return true;
    }

    return false;
}

}

//这里connectionStatus是一个布尔变量,它根据网络存储true或false值。如果它可用,它将存储真值,否则它将存储假值。

现在将以下代码粘贴到您的Android清单文件中。

 <receiver android:name=".CheckInternetConnectionChangeReceiver">
    <intent-filter>
        <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
    </intent-filter>
 </receiver>

现在,当连接更改时,它将调用brodcast接收器并将适当的值存储在connnectionStatus变量中。

答案 1 :(得分:1)

相关问题