checkSelfPermission (context, Manifest.permission.ACCESS_FINE_LOCATION) возвращает true, даже если мой GPS выключен - PullRequest
0 голосов
/ 14 июня 2019

Я пытаюсь предложить пользователю активировать GPS, если разрешение не предоставлено.Я не могу добраться до части запроса, потому что проверка всегда возвращает true, даже когда мой GPS выключен.

Вот мой код:

if (ContextCompat.checkSelfPermission(context, ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(getActivity(), new String[]{ACCESS_FINE_LOCATION}, 1);
}

Я ожидаюусловие возврата истины, поскольку мой GPS выключен, но вместо этого он возвращает ложь.

Не могли бы вы объяснить мне, почему я получаю ложь за это?

Заранее благодарим вас за вашепомощь.

Ответы [ 3 ]

1 голос
/ 14 июня 2019

Как сказал Payam, «Включить GPS» и «Проверка разрешения местоположения» - это две разные вещи. Вы всегда можете включить свое местоположение GPS в настройках телефона. Но для использования местоположения API, вы должны получить разрешения в коде.

Еще одна вещь: если у вас версия Android 6.0 или выше, вам необходимо явно получить разрешения, используя метод checkSelfPermissions (), а также в файле Manifest. Но если у вас версия Android ниже 6.0, вам нужно только добавить разрешения в Android Manifest.
Если мой ответ поможет вам, примите мой ответ, нажав символ «Галочка» слева от моего ответа.

1 голос
/ 14 июня 2019

Вы просите пользователя дать разрешение на местоположение вашего приложения. Для включения gps вам нужен другой код, поэтому после получения значения true сделайте что-то вроде этого:

Intent gpsOptionsIntent = new Intent(  
android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);  
startActivity(gpsOptionsIntent);
1 голос
/ 14 июня 2019

ContextCompat.checkSelfPermission возвращает true, если пользователь предоставил вашему приложению разрешение на ACCESS_FINE_LOCATION. Это не имеет никакого отношения к состоянию GPS на устройстве. Проверьте эту ссылку для получения дополнительной информации о том, как это работает.

Однако, если вы хотите получить доступ или определить текущее состояние GPS, если он включен или выключен в приложении, вы можете сделать это, используя следующий фрагмент кода:

if ( (context.getSystemService(Context.LOCATION_SERVICE) as LocationManager).isProviderEnabled(LocationManager.GPS_PROVIDER) ) 
{
  //gps is on in the device
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...