2012-04-30 38 views
1

我有一個應用程序,旨在檢查運行主屏幕之前的連接性。我只被用戶試圖在一臺僅支持Xoom的Xoom上運行它,該應用程序總是會導致一個強制關閉問題,並且他通過市場向我發送了一份報告。有沒有辦法找出連接可能性?

顯然,應用程序在檢查設備是否通過電話或wifi連接的線路上的if-then-else語句期間保持崩潰狀態,發出Null異常錯誤。

ConnectivityManager connec = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); 
if (connec.getNetworkInfo(0).getState() != NetworkInfo.State.CONNECTED && connec.getNetworkInfo(1).getState() != NetworkInfo.State.CONNECTED ) ... 

之處在於Xoom的問題是隻有WiFi能夠將connec.getNetworkInfo(0).getState的檢查()會導致崩潰,因爲它不具備能力或組件?如果是這樣,我該如何解決這個問題,這樣它不會崩潰,但仍然適用於所有設備?

回答

3

您可以通過下面的代碼

boolean isInternetAvailable = false; 
    ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); 

    if(networkInfo != null && (networkInfo.isConnected())) 
    { 
     isInternetAvailable = true; 
    } 

在你的代碼,您正在使用connec.getNetworkInfo(0).getState()檢查網絡狀態,而不檢查connec.getNetworkInfo(0)爲空或不

+0

而且還依賴於對connec.getNetworkInfo同樣的事情(1) - 即代碼假設該設備有兩個 –

+0

感謝非空接口。它很好地解決了問題。 – djmedic

1
public static boolean isNetworkAvailable(Context context) { 

      boolean value = false; 

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

      NetworkInfo info = manager.getActiveNetworkInfo(); 

      if (info != null && info.isAvailable()) { 
          value = true; 
      } 

      return value; 
} 
+0

謝謝。它很好地解決了問題。 – djmedic

相關問題