да. Настройки GPS больше нельзя изменять программно, поскольку они являются настройками конфиденциальности, и мы должны проверить, включены ли они из программы или нет, и обработать их, если они не включены.
Вы можете уведомить пользователя о том, что GPS выключен, и использовать что-то подобное, чтобы показать экран настроек пользователю, если хотите.
Проверьте, доступны ли провайдеры местоположения
String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
if(provider != null){
Log.v(TAG, " Location providers: "+provider);
//Start searching for location and update the location text when update available
startFetchingLocation();
}else{
// Notify users and show settings if they want to enable GPS
}
Если пользователь хочет включить GPS, вы можете показать экран настроек следующим образом.
Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivityForResult(intent, REQUEST_CODE);
И в вашем onActivityResult вы можете видеть, включил ли пользователь его или нет
protected void onActivityResult(int requestCode, int resultCode, Intent data){
if(requestCode == REQUEST_CODE && resultCode == 0){
String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
if(provider != null){
Log.v(TAG, " Location providers: "+provider);
//Start searching for location and update the location text when update available.
// Do whatever you want
startFetchingLocation();
}else{
//Users did not switch on the GPS
}
}
}
Это один из способов сделать это, и я надеюсь, что это поможет.
Дайте мне знать, если я делаю что-то не так.