Android LocationListener не вызывается

Я делаю приложение, которое отправляет текущее местоположение через смс. Но метод прослушивателя местоположения не вызывается. В нем говорится:

метод 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