Question

I am displaying Image in Android App from Hosted Server. So, I need to set StrictMode Policy.

But as I have checked, It requires Api 9 and I want to make it supportable in Api 8 also. So how can I solve this issue ? I am already using this in AsyncTask.

My Code :

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

If I am not using StrictMode then getting Error.

Logcat :

05-08 12:25:08.711: E/AndroidRuntime(27622): android.os.NetworkOnMainThreadException
05-08 12:25:08.711: E/AndroidRuntime(27622):    at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1208)
05-08 12:25:08.711: E/AndroidRuntime(27622):    at java.net.InetAddress.lookupHostByName(InetAddress.java:388)
05-08 12:25:08.711: E/AndroidRuntime(27622):    at java.net.InetAddress.getAllByNameImpl(InetAddress.java:239)
05-08 12:25:08.711: E/AndroidRuntime(27622):    at java.net.InetAddress.getAllByName(InetAddress.java:214)
05-08 12:25:08.711: E/AndroidRuntime(27622):    at libcore.net.http.HttpConnection.<init>(HttpConnection.java:70)
05-08 12:25:08.711: E/AndroidRuntime(27622):    at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
05-08 12:25:08.711: E/AndroidRuntime(27622):    at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:340)
05-08 12:25:08.711: E/AndroidRuntime(27622):    at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87)
05-08 12:25:08.711: E/AndroidRuntime(27622):    at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
05-08 12:25:08.711: E/AndroidRuntime(27622):    at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:315)
05-08 12:25:08.711: E/AndroidRuntime(27622):    at libcore.net.http.HttpEngine.connect(HttpEngine.java:310)
05-08 12:25:08.711: E/AndroidRuntime(27622):    at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:289)
05-08 12:25:08.711: E/AndroidRuntime(27622):    at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:239)
05-08 12:25:08.711: E/AndroidRuntime(27622):    at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:273)
05-08 12:25:08.711: E/AndroidRuntime(27622):    at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:168)
05-08 12:25:08.711: E/AndroidRuntime(27622):    at com.mytestbuddy.careermirror.Profile$UserProfile.onPostExecute(Profile.java:193)
05-08 12:25:08.711: E/AndroidRuntime(27622):    at com.mytestbuddy.careermirror.Profile$UserProfile.onPostExecute(Profile.java:1)
05-08 12:25:08.711: E/AndroidRuntime(27622):    at android.os.AsyncTask.finish(AsyncTask.java:631)
05-08 12:25:08.711: E/AndroidRuntime(27622):    at android.os.AsyncTask.access$600(AsyncTask.java:177)
05-08 12:25:08.711: E/AndroidRuntime(27622):    at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
05-08 12:25:08.711: E/AndroidRuntime(27622):    at android.os.Handler.dispatchMessage(Handler.java:99)
05-08 12:25:08.711: E/AndroidRuntime(27622):    at android.os.Looper.loop(Looper.java:155)
05-08 12:25:08.711: E/AndroidRuntime(27622):    at android.app.ActivityThread.main(ActivityThread.java:5511)
05-08 12:25:08.711: E/AndroidRuntime(27622):    at java.lang.reflect.Method.invokeNative(Native Method)
05-08 12:25:08.711: E/AndroidRuntime(27622):    at java.lang.reflect.Method.invoke(Method.java:511)
05-08 12:25:08.711: E/AndroidRuntime(27622):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1029)
05-08 12:25:08.711: E/AndroidRuntime(27622):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:796)
05-08 12:25:08.711: E/AndroidRuntime(27622):    at dalvik.system.NativeStart.main(Native Method)
Was it helpful?

Solution

To solve the NetworkOnMainThreadException you're seeing, read the HTTP response input stream in your doInBackground() and not in onPostExecute().

OTHER TIPS

StrictMode is available from 2.3 only, So you can't use it in 2.2.

There is tow possible ways I can give you.

  1. Go with 2.3 [or]
  2. Use AsyncTask in android.

I go with AsyncTsk

I hope this will help you.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top