Разрешить вход в приложение, только если в Android включен хотя бы один провайдер местоположения - PullRequest
0 голосов
/ 29 февраля 2012

В моем приложении у пользователя должен быть включен хотя бы один провайдер местоположения.Чтобы узнать, включен ли один, я использую:

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

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

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

1 Ответ

0 голосов
/ 29 февраля 2012

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

...