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
Post a Comment