Запуск действия настроек для результата

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

Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivityForResult(intent, LocationHelper.LOCATION_SETTINGS_REQUEST_CODE);

После того, как пользователь закроет экран настроек, я бы выполнил действие прямо внутри файла onActivityResult().

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == LocationHelper.LOCATION_SETTINGS_REQUEST_CODE) {
        LogUtils.d("onActivityResult from settings");
        fetchCurrentLocation();
    }
}

Однако onActivityResult() не вызывается. Я что-то делаю не так или этот подход вообще не работает? Заранее спасибо.


person Egor    schedule 04.03.2013    source источник


Ответы (2)


запустите настройку намерения:

Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(intent);

и получить текущее местоположение в методе onResume:

public void onResume(){
    super.onResume();
    if(isGPSEnabled){
         fetchCurrentLocation();
}
}

после возврата с экрана настроек будет вызван ваш метод onResume, и здесь вы можете получить свое местоположение.

person Anand    schedule 04.03.2013
comment
Да, спасибо, я на самом деле сейчас использую этот подход, потому что я не нашел лучшего решения. Просто подумал, что существует более простое решение. - person Egor; 04.03.2013

Вы определили разрешение ACCESS_FINE_LOCATION в своем манифесте?

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
person Jambaaz    schedule 04.03.2013
comment
Да, у меня есть, иначе я получил бы исключение. - person Egor; 04.03.2013
comment
каково значение LocationHelper.LOCATION_SETTINGS_REQUEST_CODE? - person Jambaaz; 04.03.2013
comment
Это 16, но имеет ли это значение? - person Egor; 04.03.2013
comment
Да.. requestCode Если ›= 0, этот код будет возвращен в onActivityResult() при завершении действия. - person Jambaaz; 04.03.2013