android - Error in http connectionandroid.os.NetworkOnMainThreadException -


this question has answer here:

when launched application have problem emulator 4.1 , 4.2 have made ​​the internet permission, logcat shows mssage: error in http connectionandroid.os.networkonmainthreadexception ?

    package com.example.eagletracking;  import java.io.inputstream;  import java.text.simpledateformat; import java.util.arraylist; import java.util.calendar;  import org.apache.http.httpentity; import org.apache.http.httpresponse; import org.apache.http.namevaluepair; import org.apache.http.client.httpclient; import org.apache.http.client.entity.urlencodedformentity; import org.apache.http.client.methods.httppost; import org.apache.http.impl.client.defaulthttpclient; import org.apache.http.message.basicnamevaluepair;  import android.app.activity; import android.app.alertdialog; import android.content.context; import android.content.dialoginterface; import android.content.intent; import android.database.cursor; import android.database.sqlite.sqlitedatabase; import android.location.location; import android.location.locationlistener; import android.location.locationmanager; import android.media.audiofx.bassboost.settings; import android.net.connectivitymanager; import android.net.networkinfo; import android.os.bundle; import android.os.handler; import android.util.log; import android.widget.toast;  public class gpstrackingactivity extends activity implements locationlistener {     toast toast;     boolean isgpsavaible;     private locationmanager lm;     private location location;     private static  string key =dbconection.key;     calendar currentdate;     simpledateformat formatter;     public static double latitude; // latitude                     public static double longitude; // longitude      handler handler = new handler() {         public void handlemessage(android.os.message msg) {             if (msg.what == 0) {                  synchronisation();              }              else if (msg.what == 1) {                 updatedatabase(location);             }          }      };      @override     public void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.accueil);           if (isinternetavailable(this)) {               thread th = new thread() {                      public void run() {                         try {                             while (true) {                                 thread.sleep(80000);                                 {                                     handler.sendemptymessage(0);                                 }                              }                         } catch (exception e) {                             e.printstacktrace();                         }                     }                 };                 th.start();              }      }       public static boolean isinternetavailable(context context) {         boolean isinternetavailable = false;          try {             connectivitymanager connectivitymanager = (connectivitymanager) context                     .getsystemservice(context.connectivity_service);             networkinfo networkinfo = connectivitymanager                     .getactivenetworkinfo();              if (networkinfo != null && (networkinfo.isconnected())) {                 isinternetavailable = true;             }         } catch (exception exception) {             // nothing         }          return isinternetavailable;     }      @override     protected void onresume() {         super.onresume();         try {         lm = (locationmanager) getsystemservice(location_service);          isgpsavaible = lm.isproviderenabled (locationmanager.gps_provider);     if (isgpsavaible)         {             abonnementgps();          }         } catch (exception e) {             e.printstacktrace();         }      }     private void abonnementgps() {         lm.requestlocationupdates(locationmanager.gps_provider, 10000, 0,                 this);         if (lm != null) {             location = lm                     .getlastknownlocation(locationmanager.gps_provider);         thread th = new thread() {              public void run() {                 try {                     while (location != null) {                         thread.sleep(6000);                         {                             handler.sendemptymessage(1);                         }                      }                 } catch (exception e) {                     e.printstacktrace();                 }             }         };         th.start();         }     }      private void synchronisation() {         dbconection mabasesqlite = new dbconection(gpstrackingactivity.this);         sqlitedatabase db = mabasesqlite.getreadabledatabase();         cursor c = mabasesqlite.getallrows();         int col = c.getcount(); // col=0 pas de enregistrement qui                                 // verifie la condition         if (col == 0) {             toast.maketext(gpstrackingactivity.this, "pas de donnees ",                     toast.length_long).show();             // effacer le contenue champ login et mot de passe          } else {             c.movetofirst();             while (c.isafterlast() == false) {                 // conversion int string casting                 string id = "" + c.getint(0);                 string longitude = c.getstring(1);                 string latitude = c.getstring(2);                 string time = c.getstring(3);                 string key_employe = c.getstring(4);                 inputstream = null;                 arraylist<namevaluepair> namevaluepairs = new arraylist<namevaluepair>(                         4);                 // namevaluepairs.add(new basicnamevaluepair("id",                 // ch1));                 namevaluepairs.add(new basicnamevaluepair("longitude",                         longitude));                 namevaluepairs                         .add(new basicnamevaluepair("latitude", latitude));                 namevaluepairs.add(new basicnamevaluepair("time", time));                 namevaluepairs.add(new basicnamevaluepair("key_employe", key_employe));                 c.movetonext();                 try {                     httpclient httpclient = new defaulthttpclient();                     httppost httppost = new httppost(                             "http://10.0.2.2:8888/android/synchron.php");                     httppost.setentity(new urlencodedformentity(namevaluepairs));                     httpresponse response = httpclient.execute(httppost);                     httpentity entity = response.getentity();                     = entity.getcontent();                 } catch (exception e) {                     log.d("connexion_expired",                             "error in http connection" + e.tostring());                 }             }          }          c.close();   mabasesqlite.del();   mabasesqlite.close();     }      private void updatedatabase(location location) {         dbconection mabasesqlite = new dbconection(gpstrackingactivity.this);         sqlitedatabase db = mabasesqlite.getwritabledatabase();          // mabasesqlite.oncreate(db);         //mabasesqlite.onupgrade(db, 0, 0);         longitude= location.getlatitude();         latitude=location.getlatitude();         currentdate = calendar.getinstance();         formatter = new simpledateformat("yyyy/mmm/dd hh:mm:ss");         mabasesqlite.addpoint(string.valueof(longitude),                 string.valueof(latitude),                 formatter.format(currentdate.gettime()),(key));         log.i("insert ", "ok");         mabasesqlite.close();     }      @override     public void onlocationchanged(location arg0) {       }      @override     public void onproviderdisabled(string arg0) {         // todo auto-generated method stub      }      @override     public void onproviderenabled(string arg0) {         // todo auto-generated method stub      }      @override     public void onstatuschanged(string arg0, int arg1, bundle arg2) {         // todo auto-generated method stub      } } 

networkonmainthread exception occurs when running network related operation on main ui thread. http://developer.android.com/reference/android/os/networkonmainthreadexception.html

you use should use asynctask purpose or create own thread.

you making http request on main ui thread.

http://developer.android.com/reference/android/os/asynctask.html

check link above topic under heading 4 steps.

example:

 class thetask extends asynctask<void,void,void>  {   protected void onpreexecute()   {           super.onpreexecute();             //display progressdialog.   }      protected void doinbackground(void ...params)   {           //network related opearaiton. not update ui here          return null;   }      protected void onpostexecute(void result)   {                  super.onpostexecute(result);             //dismiss progressdialog.             //update ui   }  } 

Comments

Popular posts from this blog

blackberry 10 - how to add multiple markers on the google map just by url? -

php - guestbook returning database data to flash -

delphi - Dynamic file type icon -