LocationListener не выбирает текущее местоположение пользователя - PullRequest
0 голосов
/ 05 июля 2019

Я пытаюсь получить текущее местоположение пользователя, используя 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 текущего пользователя.

1 Ответ

1 голос
/ 05 июля 2019

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

<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
                }
            }
        });

...