Android LocationListener не е извикан

Създавам приложение, което изпраща текущото местоположение чрез sms. Но методът за слушане на местоположение не се извиква. Казва:

методът LocationListener никога не се извиква

Ето моят код:

public class MainActivity2 extends Activity {

    LocationManager lm;
    LocationListener locationListener;

    private void LocationListener(Context context) {
        lm = (LocationManager)
                context.getSystemService(Context.LOCATION_SERVICE);

        locationListener = new MyLocationListener();
        lm.requestLocationUpdates(
                LocationManager.NETWORK_PROVIDER,
                60000,
                1000,
                locationListener);

    }

    private class MyLocationListener implements LocationListener {
        @Override
        public void onLocationChanged(Location loc) {
            if (loc != null) {
                String Uri = "http://maps.google.com/maps?saddr=" + loc.getLatitude() + "," + loc.getLongitude();

                SmsManager smsManager = SmsManager.getDefault();
                StringBuffer smsBody = new StringBuffer();
                smsBody.append(Uri);
                smsManager.sendTextMessage("+91847690****", null, smsBody.toString(), null, null);

                lm.removeUpdates(locationListener);
            }
        }

        public void onProviderDisabled(String provider) {
        }

        public void onProviderEnabled(String provider) {
        }

        public void onStatusChanged(String provider, int status,
                                    Bundle extras) {
        }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.menu_main_activity2, menu);
        return true;
    }



    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        int id = item.getItemId();


        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

person Shubham Saxena    schedule 07.07.2015    source източник
comment
Настроих LocationListener в метода onCreate(). Не виждам къде вашият код някога препраща към вашия клас LocationListener. stackoverflow.com/ въпроси/30824549/   -  person user1091524    schedule 07.07.2015


Отговори (1)


Изглежда, че объркването е, че сте създали метод във вашия клас MainActivity2, който се нарича LocationListener(). Това не е добре, тъй като не трябва да имате метод със същото име като LocationListener клас.

Просто преименувайте метода и тъй като този метод е част от вашата дейност, не е необходимо да предавате контекст:

private void setUpLocationListener() {
    lm = (LocationManager)
            this.getSystemService(Context.LOCATION_SERVICE);

    locationListener = new MyLocationListener();
    lm.requestLocationUpdates(
            LocationManager.NETWORK_PROVIDER,
            60000,
            1000,
            locationListener);

}

След това просто извикайте метода от onCreate():

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);

    setUpLocationListener();
}
person Daniel Nugent    schedule 07.07.2015