Android互联网连接问题

时间:2010-12-22 13:40:58

标签: android

我开发了一个使用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;
        }

然后在我的启动画面上调用此方法。并在模拟器上它正在响应。但是当我在禁用wifi后执行设备测试时,它显示错误并且应用程序崩溃。

请帮助我。

1 个答案:

答案 0 :(得分:0)

您收到错误是因为

cm.getActiveNetworkInfo()

返回null,因此当您调用

.isConnectedOrConnecting())

抛出java.lang.NullPointerException。更好的方法是测试getActiveNetworkInfo()是否返回null

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

希望这有帮助。