我正在学习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,它也因同样的异常而失败。
任何人都可以帮忙吗?谢谢!