Android - samoczynny powrót do pierwotnej aktywności po przejściu do nowej

0

Cześć,

piszę aplikację, która wykorzystuje google places (https://developers.google.com/places/android-api/placepicker)
Chcę zrobić przejście z głównego menu (MainActivity) do mapy (PlacePickerActivity).

Na stronie google'a piszą tak:

  1. Zrób intenta za pomocą buildera
  2. Ustaw położenie
  3. Wywołaj startActivityForResult()

Zrobiłem tak w aktywności PlacePicker. Wszystko działa, tylko jest jeden mały problem. Po przejściu z MainActivity do PlacePickerActivity pokazuje się mapa na dosłownie milisekundę, po czym następuje powrót do aktywności głównej, MainActivity. Czemu powraca do MainActivity? Nie mogę tego zrozumieć.

Kod aktywności PlacePickerActivity:

 package pwr.edu.pl.zwis2017.screen.maps;
 
 import android.app.Activity;
 import android.content.Intent;
 import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
 
 import com.google.android.gms.common.GooglePlayServicesNotAvailableException;
 import com.google.android.gms.common.GooglePlayServicesRepairableException;
 import com.google.android.gms.location.places.Place;
 import com.google.android.gms.location.places.ui.PlacePicker;
 import com.google.android.gms.maps.model.LatLng;
 import com.google.android.gms.maps.model.LatLngBounds;
 
 import pwr.edu.pl.zwis2017.R;
 
 public class PlacePickerActivity extends AppCompatActivity {
 
     private int PLACE_PICKER_REQUEST = 1;
     private static final LatLngBounds BOUNDS_MOUNTAIN_VIEW = new LatLngBounds(
             new LatLng(37.398160, -122.180831), new LatLng(37.430610, -121.972090));
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_place_picker);
         PlacePicker.IntentBuilder intentBuilder =
                 new PlacePicker.IntentBuilder();
         intentBuilder.setLatLngBounds(BOUNDS_MOUNTAIN_VIEW);
         try {
             startActivityForResult(intentBuilder.build(this), PLACE_PICKER_REQUEST);
         } catch (GooglePlayServicesRepairableException e) {
             e.printStackTrace();
         } catch (GooglePlayServicesNotAvailableException e) {
             e.printStackTrace();
         }
     }
 
     @Override
     protected void onActivityResult(int requestCode,
                                     int resultCode, Intent data) {
 
         if (requestCode == PLACE_PICKER_REQUEST
                 && resultCode == Activity.RESULT_OK) {
 
             final Place place = PlacePicker.getPlace(this, data);
             final CharSequence name = place.getName();
             final CharSequence address = place.getAddress();
             String attributions = (String) place.getAttributions();
             if (attributions == null) {
                 attributions = "";
             }
 
             /*mName.setText(name);
             mAddress.setText(address);
             mAttributions.setText(Html.fromHtml(attributions));*/
 
         } else {
             super.onActivityResult(requestCode, resultCode, data);
         }
     }
 }

Cały kod dostępny jest tutaj: https://github.com/mw777pwr/zwis2017
Po kilku godzinach prób wycofaliśmy się z tego, ale ostatni działający commit z tą aktywnością jest tutaj:
https://github.com/mw777pwr/zwis2017/commit/8fc0f847005dbbb587bbd51a71b3c25fce9d259e

0

Wystartowałem to na emulatorze i działa, tzn. pokazuje się mapa, mogę wybrać miejsce, a potem wraca do PlacePickerActivity (i w niej zostaje).
Może są niezgodne wersje google play services? Spróbuj zmienić na 9.8.0.
Drugi możliwy problem to brak pozwoleń (na androidzie 6.0 i wyżej) na uzyskiwanie lokalizacji (sprawdź w ustawienia -> aplikacje- > InwenTer czy ma w permissions zaznaczony dostęp do lokalizacji).

0

Dzięki wielkie! Głupi jestem, miałem włączone jakieś filtrowanie w konsoli androida, przez co nie widziałem wyjątku:

? E/Volley: [32121] BasicNetwork.performRequest: Unexpected response code 403 for https://www.googleapis.com/placesandroid/v1/search?key=AIzaSyCKFRhEqIxbcvMYBDbtu0JtR5Y8vVT-u00
05-05 23:46:47.675 10388-10487/? E/Places: Places API for Android does not seem to be enabled for your app. See https://developers.google.com/places/android/signup for more details.
05-05 23:46:47.675 10388-10487/? E/AsyncOperation: serviceID=65, operation=SearchPlaces
OperationException[Status{statusCode=PLACES_API_ACCESS_NOT_CONFIGURED, resolution=null}]
at amta.b(:com.google.android.gms:268)
at amtc.a(:com.google.android.gms:82)
at ljk.run(:com.google.android.gms:111)
at lmq.run(:com.google.android.gms:450)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at lra.run(:com.google.android.gms:17)
at java.lang.Thread.run(Thread.java:818)

Teraz już sobie poradzę ;)

0

No to wygląda na to, że w konsoli deweloperskiej musisz włączyć i powinno śmigać :). Swoją drogą jestem zaskoczony, że u mnie zadziałało (ale to najnowszy emulator, może coś pozmieniali).

0

Głupi jestem, bo miałem pozaznaczane jakieś regexy i filtry w konsoli. Trzeba odznaczyć to, co zaznaczyłem oraz po prawej stronie zaznaczyć "No filters". Wtedy wszystko jasne się stało.
Też nie rozumiem, jakim cudem u Ciebie zadziałało, ale ważne, że działa! :D ("Dziwne, bo u mnie działa")

Tutaj powinien być obrazek z regexem, ale jakoś się nie chce wyświetlić

1 użytkowników online, w tym zalogowanych: 0, gości: 1