LocationListener не получает текущее местоположение пользователя

Я пытаюсь получить текущее местоположение пользователя, используя LocationManager и LocationListener. Но не получая никакого значения.

Ниже приведен код, который я использую в Java:

  // activity is implementing LocationListener
  private LocationManager locationManager;
  // in onCreate() method.

    locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
      requestLocationPermission();
      return;
    }
    else {
      locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
    }

    //outside onCreate()
    @Override
    public void onLocationChanged(Location location) {
        double longitude =  location.getLongitude();
        double latitude =  location.getLatitude();
        NavProfileLocation.setText(String.valueOf(longitude)+" AND "+String.valueOf(latitude));
        Toast.makeText(MainActivity.this,String.valueOf(longitude)+" AND "+String.valueOf(latitude),Toast.LENGTH_LONG).show();

    }

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

    }

    @Override
    public void onProviderEnabled(String provider) {

    }

    @Override
    public void onProviderDisabled(String provider) {
        Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
        startActivity(intent);
    }

Я хочу получить широту и долготу, используя GPS текущего пользователя.

в логах есть ошибки? вы проверяли разрешения?

kAvEh 05.07.2019 13:31

да, это я проверяю. все разрешения уже предоставлены пользователем.

Gulshan Yadav 05.07.2019 13:32

Какова ваша точная проблема? вызывается onLocationChanged?

Rajat Mehra 05.07.2019 13:37

Возможный дубликат Прослушиватель местоположения Android не работает

Athira 05.07.2019 13:46

@RajatMehra нет. не звонил. это главная проблема

Gulshan Yadav 05.07.2019 13:51

@GulshanYadav и в журналах нет ошибок?

kAvEh 05.07.2019 13:52

@RajatMehra нет, ничего не получаю

Gulshan Yadav 05.07.2019 14:18

@GulshanYadav Ты внутри здания? GPS не будет работать в помещении. Вы можете использовать Сетевой провайдер для помещений.

M D 05.07.2019 15:00

пробовал и это. но я использую планшет для тестирования приложения. не работаю в этом

Gulshan Yadav 05.07.2019 15:06
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
9
57
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Добавьте еще одно разрешение:

<uses-permission android:name = "android.permission.ACCESS_COARSE_LOCATION" />

Последнее обновление от android doc api: Проверьте провайдеров сети и местоположения.


private FusedLocationProviderClient fusedLocationClient;

// ..

@Override
protected void onCreate(Bundle savedInstanceState) {
    // ...

    fusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
}



fusedLocationClient.getLastLocation()
        .addOnSuccessListener(this, new OnSuccessListener<Location>() {
            @Override
            public void onSuccess(Location location) {
                // Got last known location. In some rare situations this can be null.
                if (location != null) {
                    // Logic to handle location object
                }
            }
        });

я использую minSDK 16 и targetSDK 28

Gulshan Yadav 05.07.2019 14:36

Хорошо, а пока попробуйте скомбинировать какой-нибудь вариант с версией: скомпилируйте "com.google.android.gms:play-services-location:11.0.1". Попробуйте другую версию в этой строке... Также укажите в манифесте <uses-permission android:name = "android.permission.ACCESS_NETWORK_STATE"/>

Nikola Lukic 05.07.2019 14:44

Хорошо, target28 всегда хорош, если это возможно, до более высокого номера версии.

Nikola Lukic 05.07.2019 15:11

Другие вопросы по теме