私は Android 開発を学んでいて、問題に直面しました。
64 ビット Windows 7 と ubuntu 12.04 の両方で Eclipse ADT を使用しています。Android Virtual Device (AVD) では、プリインストールされたブラウザーを介してインターネットにアクセスできます。ただし、実際の Android フォンでは動作しますが、自分のアプリケーションは AVD で http を使用できません。
以下は私のコードです(ほとんど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 を返します。今後のデバッグでは、接続タイプが Wi-Fi ではなくモバイルであることが示されます (notworkInfo.getType() を使用)。ただし、conn.connect() は android.os.NetworkOnMainTHreadException を発生させます。HttpClient も試しましたが、同じ例外で失敗します。
誰でも助けることができますか?ありがとうございました!