Я пытаюсь отобразить координаты GPS, когда я нажимаю кнопку в макете активности. Ниже приведен метод, вызываемый при нажатии кнопки:
public void getLocation(View view) {
TextView tv = (TextView) findViewById(R.id.gps_coord_view);
LocationManager lm = (LocationManager) getSystemService(LOCATION_SERVICE);
Location loc = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
tv.setText("Latitude: " + loc.getLatitude() + "\nLongitude: " + loc.getLongitude());
}
Я получаю сообщение об ошибке
Для вызова требуется разрешение, которое может быть отклонено пользователем. Код должен явно проверять, доступно ли разрешение.
Я уже предоставил эти разрешения в своем AndroidManifest
. Ошибка выполняется, и приложение компилируется, когда я добавляю следующее до вызова lm.getLastKnownLocation
:
if (checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
&& checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
Тем не менее, приложение падает, когда я нажимаю кнопку, которая вызывает getLocation при нажатии. Что происходит? Есть ли лучший/более простой способ захвата GPS-координат устройства?