Подтвердить что ты не робот

Проверьте, включен ли доступ к моему местоположению - Android

У меня есть приложение для Android, которое использует местоположение. Но я заметил, что если пользователи отключили "Доступ к моему местоположению" в "Настройки" > "Доступ к местоположению", больше ничего не работает. Как я могу проверить, что он включен? Если он отключен, как открыть эти настройки из моего приложения?

Спасибо

РЕШЕННО:

String locationProviders = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
if (locationProviders == null || locationProviders.equals("")) {
    ...
    startActivity(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS));
}
4b9b3361

Ответ 1

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

http://www.scotthelme.co.uk/android-location-services/

Ответ 2

Вы можете проверить это так:

LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER) // Return a boolean

EDIT:

Если вы хотите проверить поставщика сети:

LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER) // Return a boolean

ИЗМЕНИТЬ 2:

Если вы хотите открыть настройки, вы можете использовать это намерение:

Intent intent = new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);

Ответ 3

Альтернативный способ сделать это без использования Settings.Secure и без сканирования всех поставщиков местоположения должен был сделать:

LocationManager locationManager = (LocationManager) getContext().getSystemService(Context.LOCATION_SERVICE);
int providersCount = locationManager.getProviders(true).size(); // Listing enabled providers only
if (providersCount == 0) {
    // No location providers at all, location is off
} 

Ответ 4

К сожалению, кажется, что использование Settings.Secure.LOCATION_PROVIDERS_ALLOWED устарело с API 19.

Новый способ сделать это:

int locationMode = Settings.Secure.getInt(
    getContentResolver(),
    Settings.Secure.LOCATION_MODE,
    Settings.Secure.LOCATION_MODE_OFF // Default value if not found
);

if (locationMode == Settings.Secure.LOCATION_MODE_OFF) {
    // Location is off
}

Ответ 5

Есть два способа проверить местоположение, 1 - использование GPS 2-используемый сетевой провайдер его лучше проверить обе службы включены или нет. Для этого используйте этот метод:)

public boolean checkServices(){
    //check location service
    LocationManager locationManager = (LocationManager)getActivity().getSystemService(Context.LOCATION_SERVICE);
    if(locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER) &&
            locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)){
            return true;
    }
}