PlacePicker.IntentBuilder закрывается сразу после открытия

Я применил интерфейс PlacePicker.IntentBuilder в своем приложении. В течение долгого времени он работал без проблем, но теперь, как только появится пользовательский интерфейс, он закрывается, и я не уверен, почему. Сумасшедшая вещь смотрит на логарифм, который он не терпит крах или не вызывает никаких исключений, поэтому я не знаю, в чем проблема. Это класс, который создает и вызывает его.

package com.example.apthagreat.faf; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.os.AsyncTask; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; 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 org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.StatusLine; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; public class DetermineSearchCoordinatesScreen extends ActionBarActivity { //Instance Variables int PLACE_PICKER_REQUEST = 1; int SELECTED_PLACE_REQUEST = 2; LatLng southWestBounds; LatLng northEastBounds; String zipCodeString; String zipCodeURL; String user; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_determine_search_coordinates_screen); final EditText zipCode = (EditText) findViewById(R.id.enterZip); final Button findZip = (Button) findViewById(R.id.findZipButton); user = getIntent().getExtras().getString("username"); //Find button is used when user enters a zip code and not the device's GPS findZip.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (findZip.getText().equals("FIND!")) { //build the URL to be passed to determine coordinates for given zip code zipCodeURL = "http://maps.googleapis.com/maps/api/geocode/json?address="; zipCodeString = zipCode.getText().toString(); if (zipCodeString.length() == 5) { //Fetch to go get GPS coordinates for zip code zipCodeURL += zipCodeString; GetZipCoordinates task = new GetZipCoordinates(southWestBounds, northEastBounds); task.execute(zipCodeURL); findZip.setText("PUSH TO SEE PLACES"); } else { Toast.makeText(getApplicationContext(), "Must enter a valid 5 digit zip code", Toast.LENGTH_SHORT).show(); } } else if (findZip.getText().equals("PUSH TO SEE PLACES")) { //AsyncTask was successful in finding coordinates and now we can pass the coordinates in and display places to user PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder(); LatLngBounds llb = new LatLngBounds(southWestBounds, northEastBounds); builder.setLatLngBounds(llb); findZip.setText("FIND!"); try { startActivityForResult(builder.build(DetermineSearchCoordinatesScreen.this), PLACE_PICKER_REQUEST); } catch (GooglePlayServicesRepairableException e) { e.printStackTrace(); } catch (GooglePlayServicesNotAvailableException e) { e.printStackTrace(); } catch(NullPointerException npe) { Toast.makeText(getBaseContext(),"Retrieval of coordinates is not yet complete! Try Again.", Toast.LENGTH_LONG).show(); } } } }); //Here we will use the device's GPS coordinates and display nearby places Button currentSpot = (Button) findViewById(R.id.currentLocationButton); currentSpot.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder(); try { startActivityForResult(builder.build(DetermineSearchCoordinatesScreen.this), PLACE_PICKER_REQUEST); } catch (GooglePlayServicesRepairableException e) { e.printStackTrace(); } catch (GooglePlayServicesNotAvailableException e) { e.printStackTrace(); } } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_search_category_location_screen, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } public void setNorthEastBounds(LatLng northEastBounds) { this.northEastBounds = northEastBounds; } public void setSouthWestBounds(LatLng southWestBounds) { this.southWestBounds = southWestBounds; } /* Once the user selects a place, a dialog will appear prompting the user if they would like to create an activity at this place */ protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == PLACE_PICKER_REQUEST) { if (resultCode == RESULT_OK) { //The place the user selected final Place place = PlacePicker.getPlace(data, this); //The dialog that will prompt the user to create an activity when a place is selected AlertDialog.Builder createActivity = new AlertDialog.Builder(this); createActivity.setMessage("Would you like to create an activity at this location?"); createActivity.setPositiveButton("YES", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //Here the user will be directed to the create activity screen and the name and address of selected place will be passed along with it Intent create = new Intent(getApplicationContext(), CreateActivityScreen.class); create.putExtra("username", user); create.putExtra("placeName", place.getName()); create.putExtra("placeAddress", place.getAddress()); startActivityForResult(create, SELECTED_PLACE_REQUEST); finish(); } }); createActivity.setNegativeButton("NO", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //If the user doesn't want to create an activity nothing will happen } }); createActivity.show(); } } } /* The class that is taking the URL and fetching to the internet to find the GPS coordinates for the user given zip code. Parses the data into a JSON object and converts it into Latitude and Longitude coordinates. The coordinates are given in the form of the Southwest bound coordinates and Northeast bound coordinates around the zip code. */ private class GetZipCoordinates extends AsyncTask<String, Void, String> { LatLng sw; LatLng ne; public GetZipCoordinates(LatLng sw, LatLng ne) { this.sw = sw; this.ne = ne; } @Override protected String doInBackground(String... placesURL) { //fetch places StringBuilder placesBuilder = new StringBuilder(); //process search parameter string(s) for (String placeSearchURL : placesURL) { //execute search HttpClient placesClient = new DefaultHttpClient(); try { //try to fetch the data HttpGet placesGet = new HttpGet(placeSearchURL); HttpResponse placesResponse = placesClient.execute(placesGet); StatusLine placeSearchStatus = placesResponse.getStatusLine(); //System.err.println(placeSearchStatus); if (placeSearchStatus.getStatusCode() == 200) { //we have an OK response HttpEntity placesEntity = placesResponse.getEntity(); InputStream placesContent = placesEntity.getContent(); InputStreamReader placesInput = new InputStreamReader(placesContent); BufferedReader placesReader = new BufferedReader(placesInput); String lineIn; while ((lineIn = placesReader.readLine()) != null) { placesBuilder.append(lineIn); } } } catch (Exception e) { System.err.println("The website is never executed"); } } return placesBuilder.toString(); } //Take the results from the URL, separate it, and get the Southwest and Northeast bound coordinates protected void onPostExecute(String result) { LatLng SWBounds = null; LatLng NEBounds = null; try { JSONObject resultObject = new JSONObject(result); JSONArray placesArray = resultObject.getJSONArray("results"); try { JSONObject placeObject = placesArray.getJSONObject(0); JSONObject southWestLoc = placeObject.getJSONObject("geometry").getJSONObject("bounds").getJSONObject("southwest"); JSONObject northEastLoc = placeObject.getJSONObject("geometry").getJSONObject("bounds").getJSONObject("northeast"); SWBounds = new LatLng(Double.valueOf(southWestLoc.getString("lat")), Double.valueOf(southWestLoc.getString("lng"))); NEBounds = new LatLng(Double.valueOf(northEastLoc.getString("lat")), Double.valueOf(northEastLoc.getString("lng"))); setSouthWestBounds(SWBounds); setNorthEastBounds(NEBounds); } catch (JSONException jse) { System.err.println("The bounds were not computed"); } } catch (Exception e) { System.err.println("The JSON object was never read"); } } } @Override public void onPause() { super.onPause(); //Blank the URL after the Map is displayed zipCodeURL = null; } @Override public void onResume() { super.onResume(); //For safe measures, set to blank when activity reappears zipCodeURL = ""; } } 

Это logcat, когда я добираюсь до этого класса и нажимаю кнопку, вызывает PlacePlace.IntentBuilder

 04-16 21:19:24.513 7650-7650/com.example.apthagreat.faf D/Activity﹕ performCreate Call debug elastic valuetrue 04-16 21:19:24.683 7650-7671/com.example.apthagreat.faf D/OpenGLRenderer﹕ endAllStagingAnimators on 0x9d2dd000 (RippleDrawable) with handle 0xb4ad4d60 04-16 21:19:24.703 7650-7650/com.example.apthagreat.faf I/Timeline﹕ Timeline: Activity_idle id: android.os.BinderProxy@24ce418b time:4496690 04-16 21:19:24.973 7650-7650/com.example.apthagreat.faf V/ActivityThread﹕ updateVisibility : ActivityRecord{26aa4d14 token=android.os.BinderProxy@1b7217fa {com.example.apthagreat.faf/com.example.apthagreat.faf.ActivityListScreen}} show : false 04-16 21:19:26.633 7650-7650/com.example.apthagreat.faf D/ViewRootImpl﹕ ViewPostImeInputStage ACTION_DOWN 04-16 21:19:26.813 7650-7671/com.example.apthagreat.faf D/OpenGLRenderer﹕ endAllStagingAnimators on 0x9d2e9600 (RippleDrawable) with handle 0x9f64add0 04-16 21:19:27.543 7650-7650/com.example.apthagreat.faf W/IInputConnectionWrapper﹕ showStatusIcon on inactive InputConnection 04-16 21:19:28.143 7650-7650/com.example.apthagreat.faf I/Timeline﹕ Timeline: Activity_idle id: android.os.BinderProxy@24ce418b time:4500135 

Может кто-то, пожалуйста, помогите мне с этим.

Solutions Collecting From Web of "PlacePicker.IntentBuilder закрывается сразу после открытия"

У меня была такая же проблема. Убедитесь, что вы включили «API мест для Android», а не только «Места API» в консоли разработчика . «API мест для Android» не будет отображаться в разделе «API и Auth / API», поскольку он не является популярным API (пока). Вам нужно будет найти его, используя поле поиска API.

Попробуйте изменить com.google.android.maps.v2.API_KEY на com.google.android.geo.API_KEY в AndroidManifest.xml .

Вот ссылка на дополнительную информацию.