0

これが私のコードです:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    button1 = (Button) findViewById(R.id.button1);

    button1.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {

            MainActivity.this.runOnUiThread(new Runnable() {

                public void run() {
                    HttpClient httpclient = new DefaultHttpClient();
                    HttpPost httppost = new HttpPost(
                            "http://shopstable.turkcell.com.tr/timmenu/getPerosConfig.do");
                    try {

                        HttpResponse response = httpclient
                                .execute(httppost);

                    } catch (ClientProtocolException e) {
                    } catch (IOException e) {
                    }
                }
            });
        }
    });

}

私は NetworkOnMainThreadException を取得しています。問題は httppost にあると思いますが、わかりませんでした。

4

3 に答える 3

1

この例外は、アプリケーションがメイン スレッドでネットワーク操作を実行しようとするとスローされます。これは、 Honeycomb SDK 以降を対象とするアプリケーションでのみスローされます。以前のバージョンの SDK を対象とするアプリケーションは、メイン イベント ループ スレッドでネットワークを実行できますが、推奨されません。AsyncTask でコードを実行します。

于 2013-07-19T06:02:49.793 に答える
0

これを使用するだけで解決策が得られます。ここで、SDK バージョンはアプリの最小 SDK バージョンです。したがって、ここで最小 SDK バージョンを設定する必要があります。そして、このコードを onCreate() メソッドの後に置きます:

if (android.os.Build.VERSION.SDK_INT > 8) {

        StrictMode.ThreadPolicy stp = new StrictMode.ThreadPolicy.Builder()
                .permitAll().build();
        StrictMode.setThreadPolicy(stp);

    }

また、このアクセス許可をマニフェスト ファイルに追加します。

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
于 2013-07-19T06:07:18.667 に答える