I want to make post on network whenever i receive sms the broadcastreciever call IntentService method but it give me following error
Activity stop timeout for ActivityRecord{420eec20 u0 com.example.myapp/.LoginActivity}
11-29 00:03:23.486   W/System.err﹕ android.os.NetworkOnMainThreadException
11-29 00:03:23.591   W/System.err﹕ at
 android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1118)
11-29 00:03:23.596   I/dalvikvm﹕ Wrote stack traces to '/data/anr/traces.txt'
11-29 00:03:23.596   W/System.err﹕ at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84)
11-29 00:03:23.601   W/System.err﹕ at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
11-29 00:03:23.606   W/System.err﹕ at libcore.io.IoBridge.connect(IoBridge.java:112)
11-29 00:03:23.611   W/System.err﹕ at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
11-29 00:03:23.616   W/System.err﹕ at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)
I know that in service we cannot use internet long processes because of mainthread but intentservice is independant let me show the code
MAIN ACTIVITY
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.activity_main);
    final Intent intent = new Intent(this,AndroService.class);
    this.startService(intent);
}
Service Class
            import org.json.JSONException;
            import org.json.JSONObject;
            public class AndroService extends IntentService
            {
                UsrAction upPayload;
                private String smsURL = "exampleurl";
                private HttpClientClass usrpayloader;
                public AndroService() {
                    super("MyApp");
                }
                public AndroService(String name) {
                    super("MyApp");
                }
                @Override
                protected void onHandleIntent(Intent intent) {
                    Toast.makeText(this, "Service started", Toast.LENGTH_SHORT).show();
                }
                @Override
                public int onStartCommand(Intent intent, int flags, int startId) {
                    onHandleIntent(intent);
                    return 1;
                }
                public enum RequestMethod
                {
                 GET,POST
                }
                public void smspayload(Context context, String strBody)
                {
                    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
                    String cookievalue = sharedPreferences.getString("androsession", null);
                    usrpayloader.AddParam("smsbody", strBody);
                    usrpayloader.AddHeader(cookievalue,"value");
                    try {
                        usrpayloader.Execute(RequestMethod.POST);
                    }
                    catch (Exception e) {
                        e.printStackTrace();
                    }
                    String fetchdata = usrpayloader.getResponse();
                    try {
                        JSONObject json = new JSONObject(fetchdata);
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            }
BroadcastReceiver class
                import android.content.BroadcastReceiver;
                import android.content.Context;
                import android.content.Intent;
                import android.os.Bundle;
                import android.telephony.SmsMessage;
                import android.util.Log;
                import android.widget.Toast;
                public class broadcaster extends BroadcastReceiver
                {
                    private final String TAG = "Hello";
                    private HttpClientClass usrpayloader;
                    private AndroService servusr;
                    @Override
                    public void onReceive(Context context, Intent intent)
                    {
                        Bundle extras = intent.getExtras();
                        String strMessage = "";
                        String strSrc="";
                        String strBody ="";
                        long time = 0;
                        if ( extras != null )
                        {
                            Object[] smsextras = (Object[]) extras.get( "pdus" );
                            for ( int i = 0; i < smsextras.length; i++ )
                            {
                                SmsMessage smsmsg = SmsMessage.createFromPdu((byte[])smsextras[i]);
                                String strMsgBody = smsmsg.getMessageBody().toString();
                                String strMsgSrc = smsmsg.getOriginatingAddress();
                                strSrc = strMsgSrc;
                                strBody = strMsgBody;
                                time = smsmsg.getTimestampMillis();
                                strMessage += "SMS from " + strMsgSrc + " : " + strMsgBody;
                                Log.i(TAG, strMessage);
                            }
                            Toast.makeText(context,strMessage,Toast.LENGTH_SHORT).show();
                            servusr = new AndroService();
                            servusr.smspayload(context,strBody,strSrc,time);
                        }
                    }
                }
The question is how can i pass android.os.NetworkOnMainThreadException error and i want to use intentservice methods so is that a good practice to declare object into broadcastreceiver?
 
    