API Google Places для Android Place Picker Не работает

Я не могу использовать Place picker в своем приложении. API работал, а затем просто остановился в один прекрасный день без каких-либо объяснений. Сборщик появляется в течение очень короткого периода времени, а затем просто закрывается без каких-либо исключений и ничего в журналах. Функция onActivityResult вызывается с requestCode = 1, resultCode = 2 (код ошибки) и без данных. Пример кода из google делает то же самое. Я попробовал все, чтобы это работало. кто-нибудь испытывает что-то подобное? Помогите пожалуйста.

AndroidManifest.xml

<!--?xml version="1.0" encoding="utf-8"?-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.easy.parcelapp." android:versioncode="1" android:versionname="1.0">
 <uses-sdk android:minsdkversion="16" android:targetsdkversion="22">
 <uses-feature android:glesversion="0x00020000" android:required="true">
 <uses-permission android:name="android.permission.CAMERA">
 <uses-permission android:name="android.permission.VIBRATE">
 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION">
 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION">
 <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS">
 <uses-permission android:name="android.permission.INTERNET">
 <uses-permission android:name="android.permission.RECEIVE_SMS">
 <uses-permission android:name="android.permission.RECORD_AUDIO">
 <uses-permission android:name="android.permission.RECORD_VIDEO">
 <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS">
 <uses-permission android:name="android.permission.READ_CONTACTS">
 <uses-permission android:name="android.permission.WRITE_CONTACTS">
 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE">
 <uses-permission android:name="android.permission.GET_ACCOUNTS">
 <uses-permission android:name="android.permission.BROADCAST_STICKY">
 <uses-permission android:name="android.permission.WAKE_LOCK">
 <uses-permission android:name="android.permission.READ_PHONE_STATE">
 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE">
 <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES">
 <application android:name=".EasiParcelApplication" android:allowbackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme">
 <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version">
 <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="AIzaSyDEcV-My-Actual-API-Key-goes-here">
 <activity android:name=".MainActivity" android:label="@string/app_name" android:theme="@android:style/Theme.Holo.Light.NoActionBar">
 <intent-filter>
 <action android:name="android.intent.action.MAIN">
 <category android:name="android.intent.category.LAUNCHER">
 </category></action></intent-filter>
 </activity>
 <activity android:name=".RegistrationActivity" android:label="@string/title_activity_register" android:parentactivityname=".MainActivity">
 <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.easiparcel.MainActivity">
 </meta-data></activity>
 <activity android:name=".JobListingActivity" android:label="@string/title_activity_listing">
 </activity>
 <activity android:name=".NewJobActivity" android:label="@string/title_activity_new_job" android:parentactivityname=".JobListingActivity">
 <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.easiparcel.JobListingActivity">
 </meta-data></activity>
 <activity android:name=".NewJobConfirmation" android:label="@string/title_activity_new_job_confirmation" android:parentactivityname=".NewJobActivity">
 <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.easiparcel.NewJobActivity">
 </meta-data></activity>
 <activity android:name=".JobDetails" android:label="@string/title_activity_job_details" android:parentactivityname=".JobListingActivity">
 <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.easiparcel.JobListingActivity">
 </meta-data></activity>
 </meta-data></meta-data></application>
</uses-permission></uses-permission></uses-permission></uses-permission></uses-permission></uses-permission></uses-permission></uses-permission></uses-permission></uses-permission></uses-permission></uses-permission></uses-permission></uses-permission></uses-permission></uses-permission></uses-permission></uses-permission></uses-permission></uses-permission></uses-feature></uses-sdk></manifest>

Activity.java

public void HandleSenderAddressPickerClicked(View view)
{
 int PLACE_PICKER_REQUEST = 1;
 LoadPlacePicker(PLACE_PICKER_REQUEST);
}
public void HandleRecieverAddressPickerClicked(View view)
{
 int PLACE_PICKER_REQUEST = 2;
 LoadPlacePicker(PLACE_PICKER_REQUEST);
}
private void LoadPlacePicker(int PlacePickerRequest)
{
 try {
 PlacePicker.IntentBuilder intentBuilder = new PlacePicker.IntentBuilder();
 Intent intent = intentBuilder.build(NewJobActivity.this);
 // Start the Intent by requesting a result, identified by a request code.
 startActivityForResult(intent, PlacePickerRequest);
 } catch (GooglePlayServicesRepairableException e) {
 GooglePlayServicesUtil
 .getErrorDialog(e.getConnectionStatusCode(), NewJobActivity.this, 0);
 } catch (GooglePlayServicesNotAvailableException e) {
 Toast.makeText(NewJobActivity.this, "Google Play Services is not available.",
 Toast.LENGTH_LONG)
 .show();
 }
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
 if (requestCode == 1) {
 if (resultCode == RESULT_OK) {
 Place place = PlacePicker.getPlace(data, this);
 String toastMsg = String.format("Sender Place: %s", place.getName());
 Toast.makeText(this, toastMsg, Toast.LENGTH_LONG).show();
 }
 }
 //Reciever
 if (requestCode == 2) {
 if (resultCode == RESULT_OK) {
 Place place = PlacePicker.getPlace(data, this);
 String toastMsg = String.format("Receiver Place: %s", place.getName());
 Toast.makeText(this, toastMsg, Toast.LENGTH_LONG).show();
 }
 }
}
3 ответа

Я понял ответ на свой вопрос.

Если кто-то еще сталкивается с той же проблемой, убедитесь, что вы включили "API мест для Android" , а не только "API мест" в Консоль разработчика. "API мест для Android" не будет отображаться в разделе "API и Auth/API", поскольку он не является популярным API (пока). Вам нужно будет найти его, используя поле поиска API.


вместо этого:

добавить это:

Это сработало для меня!!!


Проверьте свой вариант сборки.

Если вы переключились с release на debug, вы также получите код результата 2.

Переход на release помогло.

licensed under cc by-sa 3.0 with attribution.