0

我正在学习Android开发,遇到了一个问题。

我在 64 位 windows 7 和 ubuntu 12.04 中都使用 Eclipse ADT。在 Android 虚拟设备 (AVD) 中,我可以通过预装的浏览器访问互联网。但是,我自己的应用程序不能在 AVD 中使用 http,尽管它可以在我真正的 android 手机中使用。

以下是我的代码(几乎来自 android 指南--- http://developer.android.com/shareables/training/NetworkUsage.zip)。

    ConnectivityManager connMgr = (ConnectivityManager) 
        getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
    if (networkInfo != null && networkInfo.isConnected()) {
        String x = networkInfo.getTypeName(); 
        try{ 
            URL url = new URL("http://www.sina.com.cn");
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setReadTimeout(10000 /* milliseconds */);
            conn.setConnectTimeout(15000 /* milliseconds */);
            conn.setRequestMethod("GET");
            conn.setDoInput(true);
            // Starts the query
            conn.connect();
            InputStream stream = conn.getInputStream();
        }catch(Exception e){ 
            Log.e("log_tag", "Error in http connection"+e.toString()); 
        } 
    }

我在 AVD 中调试了代码,networkInfo.isConnected() 返回 true。未来的调试显示连接类型是 mobil,而不是 wifi(通过使用 notworkInfo.getType())。但是,conn.connect() 引发了 android.os.NetworkOnMainTHreadException。我也尝试了 HttpClient,它也因同样的异常而失败。

任何人都可以帮忙吗?谢谢!

4

1 回答 1

0

您是否添加<uses-permission android:name="android.permission.INTERNET" />了清单?

于 2013-07-08T17:52:32.510 回答