2010-12-22 146 views
1

我開發了一個使用web服務獲取數據的android應用程序。這意味着它需要互聯網連接。我的問題是當互聯網在Web服務調用期間或Web服務調用之前不可用時,它應該拋出一些警報。Android互聯網連接問題

我已經實現了一個代碼:

public static boolean isOnline(Context context) { 
     try { 
     ConnectivityManager cm = (ConnectivityManager) context 
     .getSystemService(Context.CONNECTIVITY_SERVICE); 
     if (cm.getActiveNetworkInfo().isConnectedOrConnecting()) { 
     URL url = new URL("https://widget.istockanalyst.com/WebServiceIStock.asmx"); 
     HttpURLConnection urlc = (HttpURLConnection) url 
     .openConnection(); 
     urlc.setRequestProperty("User-Agent", "My Android Demo"); 
     urlc.setRequestProperty("Connection", "close"); 
     urlc.setConnectTimeout(1000); // mTimeout is in seconds 

     urlc.connect(); 

     if (urlc.getResponseCode() == 200) 
     { 
      System.out.println("*********True****************"); 

     return true; 


     } 
     else 
     { 
      System.out.println("*********False****************"); 

     return false; 

     } 
     } 
     } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     } 
     return false; 
     } 

;對於M,打電話給我閃屏上此方法後。並在仿真器上響應。但是當我在禁用wifi後執行設備測試時,它顯示錯誤並且應用程序崩潰。

請幫我。

+0

你能發佈你的Logcat消息嗎 – 2010-12-22 13:44:12

回答

0

,當你調用

.isConnectedOrConnecting()) 

一個代碼引發了java.lang.NullPointerException你得到一個錯誤,因爲

cm.getActiveNetworkInfo() 

返回null,因此。一個更好的方法是測試getActiveNetworkInfo()是否返回空值

 public boolean isOnline(Context context) { 
     ConnectivityManager cm = (ConnectivityManager) context 
     .getSystemService(Context.CONNECTIVITY_SERVICE); 
     if (cm.getActiveNetworkInfo() != null && cm.getActiveNetworkInfo().isConnectedOrConnecting()) 
      return true; 
     return false; 
} 

希望這會有所幫助。