android - Find name of city in background with AsyncTask -


my goal name of city user in using coordinates locationlistener , matching google's maps api, in background asynctask.

when call cityfinder mainactivity (oncreate), nothing happening. not see logs onpreexecute.

what need fix this?

cityfinder asynctask

import android.app.activity; import android.app.progressdialog; import android.content.dialoginterface; import android.content.intent; import android.location.location; import android.location.locationlistener; import android.location.locationmanager; import android.os.asynctask; import android.os.build; import android.os.bundle; import android.provider.settings; import android.util.log; import android.widget.toast;  import com.android.volley.requestqueue; import com.android.volley.response; import com.android.volley.volleyerror; import com.android.volley.toolbox.jsonobjectrequest;  import org.json.jsonexception; import org.json.jsonobject;  import static android.support.v4.app.activitycompat.requestpermissions; import static com.android.volley.toolbox.volley.*;  public class cityfinder extends asynctask<void, void, void> {      private activity activity;     private progressdialog progressdialog;     private string googlemapsgeourl = "http://maps.googleapis.com/maps/api/geocode/json?latlng=";     private locationmanager locationmanager;     private locationlistener locationlistener;     protected string cityname;      public cityfinder(activity activity, locationmanager locationmanager, locationlistener locationlistener) {         this.activity = activity;         this.locationmanager = locationmanager;         this.locationlistener = locationlistener;         this.progressdialog = new progressdialog(this.activity);     }      protected void onpreexecute() {         log.v("cityfinder", "onpreexecute");         progressdialog.setmessage("getting city's name...");         progressdialog.show();         progressdialog.setoncancellistener(new dialoginterface.oncancellistener() {             public void oncancel(dialoginterface arg0) {                 cityfinder.this.cancel(true);             }         });     }      @override     protected void doinbackground(void... params) {         try {             this.locationmanager = (locationmanager) this.activity.getsystemservice(this.activity.location_service);             this.locationlistener = new locationlistener() {                 @override                 public void onlocationchanged(location location) {                     googlemapsgeourl += location.getlatitude() + "," + location.getlongitude();                     log.v("cityfinder", googlemapsgeourl);                     final requestqueue requestqueue = newrequestqueue(activity);                     jsonobjectrequest request = new jsonobjectrequest(googlemapsgeourl, null,                             new response.listener<jsonobject>() {                                 @override                                 public void onresponse(jsonobject response) {                                     try {                                         cityname =                                                 response.getjsonarray("results").getjsonobject(0).getstring("formatted_address");                                     } catch (jsonexception jex) {                                     }                                 }                             }, new response.errorlistener() {                         @override                         public void onerrorresponse(volleyerror error) {                         }                     });                     requestqueue.add(request);                 }                  @override                 public void onstatuschanged(string s, int i, bundle bundle) {                 }                  @override                 public void onproviderenabled(string s) {                 }                  @override                 public void onproviderdisabled(string s) {                     activity.startactivity(new intent(settings.action_location_source_settings));                 }             };             locationmanager.requestlocationupdates("gps", 1000, 0, locationlistener);         } catch (securityexception se) {             if (build.version.sdk_int >= build.version_codes.m) {                 requestpermissions(this.activity, new string[]{                         android.manifest.permission.access_fine_location, android.manifest.permission.access_coarse_location,                         android.manifest.permission.internet}, 9000);                 return null;             } else {             }             toast.maketext(activity, se.getlocalizedmessage(), toast.length_long).show();         }         return null;     }      protected void onpostexecute(void v) {         this.progressdialog.setmessage("your city name has been found: " + this.cityname);     } } 

you're missing execute call after creating asynctask. see doc example: https://developer.android.com/reference/android/os/asynctask.html

since doinbackground call doesn't use params, can run with:

new cityfinder(this, this.locationmanager, this.locationlistener).execute(); 

Comments