java - android.os.NetworkOnMainThreadException Trying to access database from android activity. Android Studio -


this question has answer here:

i getting android.os.networkonmainthreadexception in login activity. trying check if user id , password entered user correct i.e., user allowed sign in or not. have searched solution , know exception has got networking on main thread. using asynctask. still getting exception. here loginactivity.java

    public class loginactivity extends appcompatactivity {      jsonparser jsonparser = new jsonparser();     // single product url     private static final string url_user_check_login = "##########################/android_connect/db_connect.php";      int success=0;     string id="";     string password="";     private static final string tag_success = "success";      @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_login);         toolbar toolbar = (toolbar) findviewbyid(r.id.toolbar);         setsupportactionbar(toolbar);  //        defining onclicklistener login button         button loginbtn=(button) findviewbyid(r.id.login_btn);         loginbtn.setonclicklistener(new view.onclicklistener() {             @override             public void onclick(view view) { //                check credentials                 edittext phone=(edittext)findviewbyid(r.id.phone_txt);                 edittext pwd=(edittext)findviewbyid(r.id.password_txt);                 id=phone.gettext().tostring();                 password=pwd.gettext().tostring();                 new checkuserlogin().execute();                 if (success == 1) {                      intent intent=new intent(getapplicationcontext(), ridedetailsactivity.class);                     startactivity(intent);                  }else{                     // product id not found                 }             }         });     }     class checkuserlogin extends asynctask<string, string, string> {          protected string doinbackground(string... params) {              // updating ui background thread             runonuithread(new runnable() {                 public void run() {                     // check success tag                      try {                         // building parameters                         list<namevaluepair> params = new arraylist<namevaluepair>();                         params.add(new basicnamevaluepair("id", id));                          // getting product details making http request                         // note product details url use request                         jsonobject json = jsonparser.makehttprequest(                                 url_user_check_login, "get", params);                          // check log json response //                        log.d("single product details", json.tostring());                          // json success tag                         success = json.getint(tag_success);                      } catch (jsonexception e) {                         e.printstacktrace();                     }                 }             });              return null;         }       } } 

i don't know if important tried debugging , put break points inside doinbackground method debugger ignores break points , blows past new checkuserlogin().execute(); statement.

also here exception stack trace.

    fatal exception: main android.os.networkonmainthreadexception @ android.os.strictmode$androidblockguardpolicy.onnetwork(strictmode.java:1128) @ java.net.inetaddress.lookuphostbyname(inetaddress.java:385) @ java.net.inetaddress.getallbynameimpl(inetaddress.java:236) @ java.net.inetaddress.getallbyname(inetaddress.java:214) @ org.apache.http.impl.conn.defaultclientconnectionoperator.openconnection(defaultclientconnectionoperator.java:137) @ org.apache.http.impl.conn.abstractpoolentry.open(abstractpoolentry.java:164) @ org.apache.http.impl.conn.abstractpooledconnadapter.open(abstractpooledconnadapter.java:119) @ org.apache.http.impl.client.defaultrequestdirector.execute(defaultrequestdirector.java:365) @ org.apache.http.impl.client.abstracthttpclient.execute(abstracthttpclient.java:587) @ org.apache.http.impl.client.abstracthttpclient.execute(abstracthttpclient.java:511) @ org.apache.http.impl.client.abstracthttpclient.execute(abstracthttpclient.java:489) @ com.heycabs.heycabs.jsonparser.makehttprequest(jsonparser.java:65) @ com.heycabs.heycabs.loginactivity$checkuserlogin$1.run(loginactivity.java:98)at android.os.handler.handlecallback(handler.java:800) @ android.os.handler.dispatchmessage(handler.java:100) @ android.os.looper.loop(looper.java:194) @ android.app.activitythread.main(activitythread.java:5409) @ java.lang.reflect.method.invokenative(native method) @ java.lang.reflect.method.invoke(method.java:525) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:839) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:606) @ dalvik.system.nativestart.main(native method) 

you incorrectly using asynktask. success == 1 never excute, since synchronous commands happen in nanoseconds, , network, take several milliseconds.

do startactivity(intent) on asynk completion.... created new thread, , in it, went ui one:

runonuithread(new runnable() 

this incorrect. please read documentation on asynktask. , read example


Comments