android - Unfortunately <application> has stopped -
i have app user submits data in form sent server. testing on tablet , android smartphone (galaxy s2). on tablet, click on "submit", application stops working message "unfortunately has stopped working". problem not seen on either phone or emulator, has me stumped.
there screen in app user has option re-submit same credentials. there too, same problem encountered. rest of app works ok. has led me conclude problem might lie in way sending data server. code snippet follows:
//code send server should begin here. httpclient hc = new defaulthttpclient(); httppost hp = new httppost("http://www.mywebsite.com/takedetails.php"); try { // add data list<namevaluepair> namevaluepairs = new arraylist<namevaluepair>(2); string val = "new"; namevaluepairs.add(new basicnamevaluepair("mode", val)); namevaluepairs.add(new basicnamevaluepair("name", name)); namevaluepairs.add(new basicnamevaluepair("number", number)); namevaluepairs.add(new basicnamevaluepair("email", emailid)); log.v(this.tostring(), "email = " + emailid); hp.setentity(new urlencodedformentity(namevaluepairs)); // execute http post request httpresponse response = hc.execute(hp); //toast.maketext(getapplicationcontext(), "attempting register.", toast.length_long).show(); string responsebody = entityutils.tostring(response.getentity()); if(responsebody.contains("success")) { toast.maketext(getapplicationcontext(), "thank registering! receive email username , password shortly.", toast.length_long).show(); } else { toast.maketext(getapplicationcontext(), "attempt register failed.", toast.length_long).show(); } log.v(this.tostring(), "http response = " + responsebody); } catch (clientprotocolexception e) { // todo auto-generated catch block } catch (ioexception e) { // todo auto-generated catch block } logcat output:
v/com.sriram.htmldisplay.htmldisplay@4107bef0( 3766): line read = name: jguyjfhf v/com.sriram.htmldisplay.htmldisplay@4107bef0( 3766): line read = number: 668895898 v/com.sriram.htmldisplay.htmldisplay@4107bef0( 3766): line read = email id:jvjhfhc@ccf.mkj v/com.sriram.htmldisplay.htmldisplay@4107bef0( 3766): user details gleaned = name = jguyjfhf v/com.sriram.htmldisplay.htmldisplay@4107bef0( 3766): 668895898 v/com.sriram.htmldisplay.htmldisplay@4107bef0( 3766): jvjhfhc@ccf.mkj v/com.sriram.htmldisplay.htmldisplay@4107bef0( 3766): email = jvjhfhc@ccf.mkj d/androidruntime( 3766): shutting down vm w/dalvikvm( 3766): threadid=1: thread exiting uncaught exception (group=0x409f11f8) e/androidruntime( 3766): fatal exception: main e/androidruntime( 3766): android.os.networkonmainthreadexception e/androidruntime( 3766): @ android.os.strictmode$androidblockguardpolicy.onnetwork(strictmode.java:1099) e/androidruntime( 3766): @ java.net.inetaddress.lookuphostbyname(inetaddress.java:391) e/androidruntime( 3766): @ java.net.inetaddress.getallbynameimpl(inetaddress.java:242) e/androidruntime( 3766): @ java.net.inetaddress.getallbyname(inetaddress.java:220) e/androidruntime( 3766): @ org.apache.http.impl.conn.defaultclientconnectionoperator.openconnection(defaultclientconnectionoperator.java:137) e/androidruntime( 3766): @ org.apache.http.impl.conn.abstractpoolentry.open(abstractpoolentry.java:164) e/androidruntime( 3766): @ org.apache.http.impl.conn.abstractpooledconnadapter.open(abstractpooledconnadapter.java:119) e/androidruntime( 3766): @ org.apache.http.impl.client.defaultrequestdirector.execute(defaultrequestdirector.java:360) e/androidruntime( 3766): @ org.apache.http.impl.client.abstracthttpclient.execute(abstracthttpclient.java:555) e/androidruntime( 3766): @ org.apache.http.impl.client.abstracthttpclient.execute(abstracthttpclient.java:487) e/androidruntime( 3766): @ org.apache.http.impl.client.abstracthttpclient.execute(abstracthttpclient.java:465) e/androidruntime( 3766): @ com.sriram.htmldisplay.htmldisplay.writesenddetails(htmldisplay.java:200) e/androidruntime( 3766): @ com.sriram.htmldisplay.htmldisplay.access$10(htmldisplay.java:127) e/androidruntime( 3766): @ com.sriram.htmldisplay.htmldisplay$1.onclick(htmldisplay.java:110) e/androidruntime( 3766): @ android.view.view.performclick(view.java:3511) e/androidruntime( 3766): @ android.view.view$performclick.run(view.java:14105) e/androidruntime( 3766): @ android.os.handler.handlecallback(handler.java:605) e/androidruntime( 3766): @ android.os.handler.dispatchmessage(handler.java:92) e/androidruntime( 3766): @ android.os.looper.loop(looper.java:137) e/androidruntime( 3766): @ android.app.activitythread.main(activitythread.java:4424) e/androidruntime( 3766): @ java.lang.reflect.method.invokenative(native method) e/androidruntime( 3766): @ java.lang.reflect.method.invoke(method.java:511) e/androidruntime( 3766): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:784) e/androidruntime( 3766): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:551) e/androidruntime( 3766): @ dalvik.system.nativestart.main(native method) d/dalvikvm( 3766): gc_concurrent freed 290k, 7% free 6697k/7175k, paused 4ms+6ms w/activitymanager( 1268): force finishing activity com.sriram.htmldisplay/.htmldisplay d/tabletstatusbar( 1340): hiding menu button w/activitymanager( 1268): activity pause timeout activityrecord{41406c60 com.sriram.htmldisplay/.htmldisplay my questions:
1. there better way handle errors httpclient?
2. ideas on may causing tablet fail welcome.
networkonmainthreadexception: exception thrown when application attempts perform networking operation on main thread.
add code in oncreate
strictmode.threadpolicy policy = new strictmode.threadpolicy.builder().permitall().build(); strictmode.setthreadpolicy(policy); or add http call code asynctask
class retreivefeedtask extends asynctask<string, void, rssfeed> { private exception exception; protected rssfeed doinbackground(string... urls) { try { // add code here } catch (exception e) { this.exception = e; return null; } } protected void onpostexecute(rssfeed feed) { // todo: check this.exception // todo: feed } } to execute asynctask:
new retreivefeedtask().execute(urltorssfeed); hope have added below permission in android manifest file
<uses-permission android:name="android.permission.internet"/>
Comments
Post a Comment