2015-04-08 2 views
2

Поток пользователей: Щелчок по кнопке, перенаправляется в MapActivity, где отображаются карты google. Дано местоположение, есть кнопка для маршрута, использующего текущее местоположение в данном месте. Когда службы определения местоположения отключены, пользователю предлагается включить его.Обновление активности после изменения пользователем настроек местоположения

private void goToLocationSettings(){ 
    Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
    startActivityForResult(intent, 1); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (resultCode == 1) { 
     switch (requestCode) { 
      case 1: Log.e("test", "onActivityResult"); 
       break; 
     } 
    } 
} 

Когда пользователь возвращает функцию, она должна быть в состоянии выполнить. Но программа снова включит настройки. Журнал никогда не отображается.

Если я немного подожду после включения служб определения местоположения на своем устройстве, у меня нет вопроса включить его, но сообщение журнала все еще не отображается.

Я понятия не имею, что я делаю неправильно.

ответ

7

Вы проверяете неточно resultCode, чтобы избежать путаницы использования констант Activity#RESULT_OK и Activity#RESULT_CANCELED. Если вы проверите документы, вы увидите, что RESULT_OK имеет значение int -1.

В случае начальных настроек местоположения Активность для результата resultCode всегда будет 0, так как пользователь выйдет из операции «Настройки» с помощью кнопки «Назад», поэтому в систему, похоже, он отменил запрос.

static final int LOCATION_SETTINGS_REQUEST = 1; 

protected void onActivityResult(int requestCode, int resultCode, 
     Intent data) { 
    if (requestCode == LOCATION_SETTINGS_REQUEST) { 
     // user is back from location settings - check if location services are now enabled 
     checkGPS(); 
    } 
} 
+0

Хорошо, что интересно, если я запустил его с помощью отладчика, он появится resultCode = 0, поэтому он не отобразит журнал, если я разместил там журнал. Любая идея, что может быть причиной этого? –

+0

Вы не можете получить результат из активности настроек местоположения, поэтому способ сделать это - просто проверить, включены ли службы определения местоположения при возврате пользователя. –

+1

В этом случае 'resultCode' всегда будет 0, так как пользователь выходит из действия« Настройки »с помощью кнопки« Назад », поэтому он как бы отменил запрос. –

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