次の関数を使用して、PHP WebページからJSON配列を取得しています。Gingerbreadで働いているアプリケーションがHoneycombでNetworkOnMainThreadExceptionをスローする
この正確なコードは、私が現在ビルドしている3.0バージョンのアプリケーションの2.3バージョンで動作しますが、強制終了して奇妙なエラーログが表示されます。
すべてのヘルプは素晴らしいことだ...
は、HTTPポストと、そのようなものを使用する場合にジンジャーブレッドのように反対ハニカムする任意の特殊性はありますか?
private void getNews(){
try{
HttpGet httpGet = new HttpGet("http://www.ace.ucv.ro/android/stiri.php?perpage=20");
result = EntityUtils.toString(new DefaultHttpClient().execute(httpGet).getEntity());
JSONArray jsonMainArray = new JSONArray(result);
} catch (ParseException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
}
と機能の呼び出し:
getNews.setOnClickListener(new OnClickListener(){
public void onClick(View view){
getNews();
}
});
とエラー・ログ
02-26 16:06:42.218: W/dalvikvm(478): threadid=1: thread exiting with uncaught exception (group=0x40014760)
02-26 16:06:42.247: E/AndroidRuntime(478): FATAL EXCEPTION: main
02-26 16:06:42.247: E/AndroidRuntime(478): android.os.NetworkOnMainThreadException
02-26 16:06:42.247: E/AndroidRuntime(478): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1077)
02-26 16:06:42.247: E/AndroidRuntime(478): at java.net.InetAddress.lookupHostByName(InetAddress.java:477)
02-26 16:06:42.247: E/AndroidRuntime(478): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:277)
02-26 16:06:42.247: E/AndroidRuntime(478): at java.net.InetAddress.getAllByName(InetAddress.java:249)
02-26 16:06:42.247: E/AndroidRuntime(478): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:136)
02-26 16:06:42.247: E/AndroidRuntime(478): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
02-26 16:06:42.247: E/AndroidRuntime(478): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
02-26 16:06:42.247: E/AndroidRuntime(478): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
02-26 16:06:42.247: E/AndroidRuntime(478): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
02-26 16:06:42.247: E/AndroidRuntime(478): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
02-26 16:06:42.247: E/AndroidRuntime(478): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
02-26 16:06:42.247: E/AndroidRuntime(478): at pirelli.app.ScanBarcode.getNews(ScanBarcode.java:46)
02-26 16:06:42.247: E/AndroidRuntime(478): at pirelli.app.ScanBarcode.access$4(ScanBarcode.java:42)
02-26 16:06:42.247: E/AndroidRuntime(478): at pirelli.app.ScanBarcode$5.onClick(ScanBarcode.java:164)
02-26 16:06:42.247: E/AndroidRuntime(478): at android.view.View.performClick(View.java:3110)
02-26 16:06:42.247: E/AndroidRuntime(478): at android.view.View$PerformClick.run(View.java:11934)
02-26 16:06:42.247: E/AndroidRuntime(478): at android.os.Handler.handleCallback(Handler.java:587)
02-26 16:06:42.247: E/AndroidRuntime(478): at android.os.Handler.dispatchMessage(Handler.java:92)
02-26 16:06:42.247: E/AndroidRuntime(478): at android.os.Looper.loop(Looper.java:132)
02-26 16:06:42.247: E/AndroidRuntime(478): at android.app.ActivityThread.main(ActivityThread.java:4123)
02-26 16:06:42.247: E/AndroidRuntime(478): at java.lang.reflect.Method.invokeNative(Native Method)
02-26 16:06:42.247: E/AndroidRuntime(478): at java.lang.reflect.Method.invoke(Method.java:491)
02-26 16:06:42.247: E/AndroidRuntime(478): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
02-26 16:06:42.247: E/AndroidRuntime(478): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
02-26 16:06:42.247: E/AndroidRuntime(478): at dalvik.system.NativeStart.main(Native Method)
JSONを適切な形式で返しません。正しいと思う、私は応答でHTML文字列を返すたびにCDATAを使うべきだと思います。 –
Googleで 'android.os.NetworkOnMainThreadException'を検索するのが面倒ですか? – Selvin
私はそれを試してみますが、私はまだ同じコードが、すでに機能していて機能している私のジンジャーブレッドアプリでどう働いているのか理解できません... – Eugen