2015-12-17 19 views
1

我有這段代碼,我必須避免DD異常「最近變量被重新定義」。但是我必須避免創建另一個返回語句。我不知道如何去做。如果任何人都可以幫助我,這將是非常有益的。避免DD異常而不添加return語句

代碼DD異常

public static boolean hasActiveInternetConnection() { 
    int returnVal = 1; 
    try { 
     final Process ping = java.lang.Runtime.getRuntime().exec("ping -c 1 www.google.com"); 
     returnVal = ping.waitFor(); 
    } catch (final java.io.IOException | InterruptedException e) { 
     Log.e(TAG, e.getMessage()); 
    } 
    return returnVal == 0; 
} 

代碼雙倍返還異常

public static boolean hasActiveInternetConnection() { 
    try { 
     final Process ping = java.lang.Runtime.getRuntime().exec("ping -c 1 www.google.com"); 
     final int returnVal = ping.waitFor(); 
     return returnVal == 0; 
    } catch (final java.io.IOException | InterruptedException e) { 
     Log.e(TAG, e.getMessage()); 
    } 
    return false; 
} 

謝謝!

回答

2
public boolean isNetworkActive() { 
    try { 
    Process ping = java.lang.Runtime.getRuntime().exec("ping -c 1 www.google.com"); 
    return ping.waitFor()==0? true : false; 
    } catch (final java.io.IOException | InterruptedException e) { 
     return false; 
    } 

} 

順便說一句,這不是你如何測試Android上的網絡連接,這裏是一個比較有用的方法:

public static boolean checkNetworkStatus(Context context) { 

    ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
    android.net.NetworkInfo wifi = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 
    android.net.NetworkInfo mobile = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 


    boolean networkIsMobile = false; 
    boolean networkIsWiFi = false; 
    if (wifi != null && wifi.isAvailable() && wifi.isConnected()) { 
     networkIsWiFi = true; 
    } 
    if (mobile != null && mobile.isAvailable() && mobile.isConnected()) { 
     networkIsMobile = true; 
    } 


    boolean networkActive = networkIsMobile || networkIsWiFi; 

    return networkActive; 
} // End of checkNetworkStatus 

PS:我認爲pingFor == 0意味着網絡和pingFor = = 1意味着沒有網絡,如果是相反的方式,切換它們

+0

爲我工作,我很欣賞它 關心 –