0

私は 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 も試しましたが、同じ例外で失敗します。

誰でも助けることができますか?ありがとうございました!

4

1 に答える 1

0

マニフェストに追加<uses-permission android:name="android.permission.INTERNET" />しましたか?

于 2013-07-08T17:52:32.510 に答える