Ответ 1
может быть, это будет полезно проверьте этот сайт, на котором обсуждаются услуги определения местоположения.
У меня есть приложение для 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));
}
может быть, это будет полезно проверьте этот сайт, на котором обсуждаются услуги определения местоположения.
Вы можете проверить это так:
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);
Альтернативный способ сделать это без использования 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
}
К сожалению, кажется, что использование 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
}
Есть два способа проверить местоположение, 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;
}
}