2012-02-29 3 views
0

В моем приложении у пользователя должен быть включен хотя бы один провайдер местоположения. Для того, чтобы знать, если один включен я использую:Разрешить ввод приложения только в том случае, если в 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() (Я знаю, что он не может блокировать поток пользовательского интерфейса, но как я могу преодолеть эту ситуацию)?

Есть ли способ выполнить код после того, как пользователь что-то выбрал в настройках сети?

Спасибо! Гильермо.

+0

Вы всегда можете запустить поток в фоновом режиме (приемник, сервис, поток), который будет проверять ситуацию и запускать код. – MKJParekh

ответ

0

когда настройки экрана приходят перед вашим activity, логически и акк к документации, ваш activity является paused и тогда, когда требуется ваша activity является resumed ... так что я думаю, вы должны использовать код проверки в onResume ...

Смежные вопросы