簡體   English   中英

在Android中檢查3G和W​​ifi的互聯網連接

[英]Check internet connection with 3G and Wifi in Android

有時,我必須在我的Android應用程序中檢查互聯網連接:

private boolean isNetworkAvailable() {
    ConnectivityManager connectivityManager= (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
    return activeNetworkInfo != null;
}

上面的代碼僅在一個Network可用時才有效! 但是,我的設備有wifi3G ,當我使用上述兩種類型的網絡連接時,上面的代碼總是返回false (當它返回false時我仍然可以使用google.com )!! 我錯過了什么? 謝謝!

試試這個

private boolean haveNetworkConnection() 
{
    boolean haveConnectedWifi = false;
    boolean haveConnectedMobile = false;

    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo[] netInfo = cm.getAllNetworkInfo();
    for (NetworkInfo ni : netInfo) 
    {
        if (ni.getTypeName().equalsIgnoreCase("WIFI"))
            if (ni.isConnected())
                haveConnectedWifi = true;
        if (ni.getTypeName().equalsIgnoreCase("MOBILE"))
            if (ni.isConnected())
                haveConnectedMobile = true;
    }
    return haveConnectedWifi || haveConnectedMobile;
}

這段代碼怎么樣?

        ConnectivityManager connectivityManager = (ConnectivityManager) context
            .getSystemService(Context.CONNECTIVITY_SERVICE);

    NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();

    // Check the current state of the Network Information
    if (networkInfo == null)
        return false;
    if (networkInfo.isConnected() == false)
        return false;
    if (networkInfo.isAvailable() == false)
        return false;
    return true;

還記得在應用程序清單文件中添加它:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM