Как я могу получить текущее местоположение в виде широты и долготы в Android? - PullRequest
1 голос
/ 04 апреля 2019

Я пытаюсь вернуть широту и долготу моего текущего местоположения с помощью эмулятора. Я получаю сообщение об ошибке, что мне нужно разрешить ACCESS_FINE_LOCATION, даже если это уже есть в моем файле манифеста. Кто-нибудь знает, почему следующий код не будет работать с этим, даже если он находится в моем файле манифеста?

спасибо заранее!

Есть также версия, в которой я пытался использовать fusedLocationClient, но она ничего не делает, я думаю, потому что мое местоположение не меняется.

Целью этого кода является отображение текущего местоположения с точки зрения широты и долготы в виде тоста.

    public void displayCurrentLocation(View view){

        LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
        Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
        double longitude = location.getLongitude();
        double latitude = location.getLatitude();
        Toast.makeText(getApplicationContext(),"Latitude:" + latitude + " Longitude:" + longitude,Toast.LENGTH_SHORT);

//        fusedLocationClient.getLastLocation()
//                .addOnSuccessListener(this, new OnSuccessListener<Location>() {
//                    @Override
//                    public void onSuccess(Location location) {
//                        double longitude = location.getLongitude();
//                        double latitude = location.getLatitude();
//                        Toast.makeText(getApplicationContext(),"Latitude:" + latitude + " Longitude:" + longitude,Toast.LENGTH_SHORT);
//                        if (location != null) {
//                            // Logic to handle location object
//                        }
//                    }
//                });

    }

1 Ответ

0 голосов
/ 04 апреля 2019

Если вашему приложению требуется опасное разрешение, вы должны проверять, есть ли у вас это разрешение каждый раз, когда вы выполняете операцию, для которой требуется это разрешение. Начиная с Android 6.0 (уровень API 23), пользователи могут отозвать разрешения у любого приложения в любое время, даже если приложение предназначено для более низкого уровня API.

См. Документы для получения дополнительной информации.

Это означает, что вы должны запрашивать ваши разрешения каждый раз, когда пользователи будут использовать эту функцию.

Вот пример

if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) ==
    PackageManager.PERMISSION_GRANTED &&
    ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) ==
    PackageManager.PERMISSION_GRANTED) {
    //here you do your code for getting latLng
}
else {
  ActivityCompat.requestPermissions(this, new String[] {
  Manifest.permission.ACCESS_FINE_LOCATION, 
  Manifest.permission.ACCESS_COARSE_LOCATION }, 
  TAG_CODE_PERMISSION_LOCATION);

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...