В моем приложении у пользователя должен быть включен хотя бы один провайдер местоположения. Для того, чтобы знать, если один включен я использую:Разрешить ввод приложения только в том случае, если в Android включено хотя бы одно средство определения местоположения.
isGpsLocationEnabled = ((LocationManager) getSystemService(LOCATION_SERVICE))
.isProviderEnabled(LocationManager.GPS_PROVIDER);
isNetworkLocationEnabled = ((LocationManager) getSystemService(LOCATION_SERVICE))
.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
Теперь я создал активность предупреждая, что никто не включена, и если пользователь выбирает «Включить GPS» открыть параметры GPS с ACTION_LOCATION_SOURCE_SETTINGS намерениями.
Я хочу (после выбора пользователя), чтобы проверить, разрешил ли он один, и только пусть продолжит, если он это сделает.
У меня есть этот код в кнопку «Включить GPS»
showGpsOptions();
isGpsLocationEnabled = ((LocationManager) getSystemService(LOCATION_SERVICE))
.isProviderEnabled(LocationManager.GPS_PROVIDER);
isNetworkLocationEnabled = ((LocationManager) getSystemService(LOCATION_SERVICE))
.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
if (isGpsLocationEnabled || isNetworkLocationEnabled){
Intent startIntent = new Intent(EnableLocationProviderActivity.this, SensingService.class);
startService(startIntent);
} else {
finish();
}
Моя проблема заключается в том, что isGpsLocationEnabled и isNetworkLocationEnabled никогда не обновляется при выборе пользователем в настройках сети, как код продолжает выполнение после showGpsOptions() (Я знаю, что он не может блокировать поток пользовательского интерфейса, но как я могу преодолеть эту ситуацию)?
Есть ли способ выполнить код после того, как пользователь что-то выбрал в настройках сети?
Спасибо! Гильермо.
Вы всегда можете запустить поток в фоновом режиме (приемник, сервис, поток), который будет проверять ситуацию и запускать код. – MKJParekh