Код requestCode возвращает то же значение, либо измените параметр проверки для gps, либо нет - PullRequest
2 голосов
/ 16 марта 2011

Я вызываю следующий метод:

Intent intent = new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivityForResult(intent, GPS_LOC);

но onActivityResultas ниже метода

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode != -1) {
           switch (requestCode) {
              case GPS_LOC:
                userData();
               break;
            }
         }  
     }

это "requestCode" и "resultCode", возвращающие одно и то же значение либо вы "на" настройке gps, либо возвращаете без выполнения "on" Я не хочу вызывать userData (); когда пользователь не включил настройку GPS. Пожалуйста, посмотрите в материю

Ответы [ 2 ]

1 голос
/ 16 марта 2011

Проблема в том, что вы не можете запустить действие:

android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS

за результат.

Поэтому ваш код запроса никогда не возвращается из действия.

Спросите себя, почему вы хотите начать это для результата? Это проверить, не включили ли они GPS? Если это так, когда активность возвращается, просто проверьте это снова. Если это по другой причине, я не думаю, что вы понимаете, что такое startActivityForResult.

Похожие вопросы: получение-обратно из-места-на-мой-приложения

0 голосов
/ 22 марта 2013

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

В вашем случае вы не должны использовать onActivityResult, так как действие настройки источника местоположения никогда не установит код результата.

Чтобы достичь того, чего вы хотите, вы должны сделать что-то в вашем методе onResume (). После завершения действия по настройке источника местоположения GPS будет вызван ваш метод onResume (). Так что вы просто включите или выключите GPS в onResume.

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

Ниже приведен пример кода

 void onCreate(){
    //do something 
    Intent intent = new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
    startActivity(intent);}

 void onResume(){
    if (firstTime){
      // do something
       firstTime = false;
    }
    else{ // it's from GPS setting activity
     //check your gps again with your logic here
    }
 }
...