Error de NetworkOnMainThreadException en jellybean

He estado tratando de conseguir que esto funcione durante la última semana o así y todavía no tienen idea de cuál es el problema. Funciona en android 2.1 pero no en 4.1. Ive tengo esta cadena en un servicio que busca actualizaciones en mi aplicación.

latestVersion = Integer.parseInt(getHttpString(urlLatestVersion)); 

Su llamado en checkForUpdate (); Que se llama en onStart (Intención intención, int startId) ;.

 private String getHttpString(String urlString) throws IOException { InputStream in = null; int response = -1; URL url = new URL(urlString); URLConnection conn = url.openConnection(); if (!(conn instanceof HttpURLConnection)) throw new IOException("Not an HTTP connection"); try { HttpURLConnection httpConn = (HttpURLConnection) conn; httpConn.setAllowUserInteraction(false); httpConn.setInstanceFollowRedirects(true); httpConn.setRequestMethod("GET"); httpConn.connect(); response = httpConn.getResponseCode(); if (response == HttpURLConnection.HTTP_OK) { in = httpConn.getInputStream(); } } catch (Exception ex) { ex.printStackTrace(); // //main error currently lies here // TODO fix errors that accures on android 4.0 and above. // } if (in != null) { StringBuilder sb = new StringBuilder(); String line; try { BufferedReader reader = new BufferedReader( new InputStreamReader(in, "UTF-8")); while ((line = reader.readLine()) != null) { sb.append(line); // .append("\n"); } } finally { in.close(); } return sb.toString(); } else return ""; } 

Este es el error del logcat

 W/System.err( 7077): android.os.NetworkOnMainThreadException W/System.err( 7077): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117) W/System.err( 7077): at java.net.InetAddress.lookupHostByName(InetAddress.java:385) W/System.err( 7077): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236) W/System.err( 7077): at java.net.InetAddress.getAllByName(InetAddress.java:214) W/System.err( 7077): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:70) W/System.err( 7077): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50) W/System.err( 7077): at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:341) W/System.err( 7077): at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87) W/System.err( 7077): at libcore.net.http.HttpConnection.connect(HttpConnection.java:128) W/System.err( 7077): at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:315) W/System.err( 7077): at libcore.net.http.HttpEngine.connect(HttpEngine.java:310) W/System.err( 7077): at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:289) W/System.err( 7077): at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:239) W/System.err( 7077): at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:80) W/System.err( 7077): at com.lukemovement.roottoolbox.pro.Update.getHttpString(Update.java:166) W/System.err( 7077): at com.lukemovement.roottoolbox.pro.Update.checkForUpdate(Update.java:98) W/System.err( 7077): at com.lukemovement.roottoolbox.pro.Update.onStart(Update.java:75) W/System.err( 7077): at android.app.Service.onStartCommand(Service.java:450) W/System.err( 7077): at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2620) W/System.err( 7077): at android.app.ActivityThread.access$1900(ActivityThread.java:143) W/System.err( 7077): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1306) W/System.err( 7077): at android.os.Handler.dispatchMessage(Handler.java:99) W/System.err( 7077): at android.os.Looper.loop(Looper.java:137) W/System.err( 7077): at android.app.ActivityThread.main(ActivityThread.java:4935) W/System.err( 7077): at java.lang.reflect.Method.invokeNative(Native Method) W/System.err( 7077): at java.lang.reflect.Method.invoke(Method.java:511) W/System.err( 7077): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791) W/System.err( 7077): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:558) W/System.err( 7077): at dalvik.system.NativeStart.main(Native Method) I/Example update( 7077): Invalid int: "" 

Por lo que Android ha renunciado a ser compatible con lo anterior o acaba de olvidar de añadir este poco?

He leído que necesito usar AsyncTask. Pero no puedo parecen conseguir que funcione para mí, ¿podría alguien ayudarme con esto por favor?

Desde Android API v15, no requiere ningún proceso pesado que funcione en el hilo principal. Así que debes mover tu lógica a otro hilo como el código fuente de abajo:

 new Thread(new Runnable() { public void run() { // your logic } }).start(); 

Más información por favor refiérase a:

Sólo tiene que añadir este código en oncreate en la actividad que u llamar a Asynck.

código:-

 StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.