2010-12-22 97 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; 
} 

希望这会有所帮助。