Места для Android API устарела альтернатива - PullRequest
0 голосов
/ 11 февраля 2019

Я пытался реализовать API Адресов.Мой код выглядел так:

val builder = PlacePicker.IntentBuilder()
startActivityForResult(builder.build(mActivity), PLACE_PICKER_REQUEST)

Учетные данные моих карт были правильными, но для этого вызова я получил

Places API for Android does not seem to be enabled for your app. See https://developers.google.com/places/android/signup for more details.

Однако, когда я попытался включить «API Адресов для Android»Я получил эту ошибку.

У вас недостаточно прав для просмотра этой страницы.

Я попытался выйти из своих учетных записей, войти снова, режим инкогнито, Safari & Chrome.Ничего не помогло, поэтому я связался со службой поддержки, которая была очень быстрой (спасибо, ребята!)

Причина, по которой вы получаете сообщение об ошибке при попытке включить API Адресов для Android, заключается в том, что оно устарело.Функциональность Places для Android теперь будет включена с помощью API Places.

Я спросил о своей реализации и получил этот ответ.

Выбор места также устарел,Вы можете установить библиотеку совместимости, чтобы продолжать использовать средство выбора мест до окончания периода устаревания 29 июля.Подробнее об этом можно прочитать здесь: https://developers.google.com/places/android-sdk/client-migration#place_picker

Документы, которые я сейчас нахожу в Интернете, немного сбивают с толку, что является устаревшим, а что нет?Кто-нибудь может указать мне правильное направление для такого рода функциональности?

Ответы [ 4 ]

0 голосов
/ 12 июля 2019

Несмотря на то, что Google предоставил новый API для Places SDK, они отказываются от поддержки Place Picker из-за новой политики выставления счетов, и есть два варианта, как это сделать.

  1. Вы можетереализовать эту логику самостоятельно, используя новый SDK.

  2. Или, к счастью, есть Ping Place Picker библиотека, которая имитирует поведение старого Place Picker.

0 голосов
/ 14 мая 2019

Клавиши могут начать работать некоторое время.Согласно документам:

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

https://developers.google.com/places/android-sdk/signup

0 голосов
/ 30 мая 2019

Версия Google Play Services для Places SDK для Android (в Google Play Services 16.0.0) устарела по состоянию на 29 января 2019 года и будет отключена 29 июля 2019 года. И если вы проверите по GoogleКонсоль API, она имеет только API PLACES, и больше нет ничего похожего на PLACES SDK FOR ANDROID.

Руководство по миграции на новые места Клиентская библиотека SDK можно найти здесь

Или найдите пользовательскую реализацию в моем репо => NewGooglePlacesSDK

0 голосов
/ 07 марта 2019

Google Places SDK для Android устарел, поэтому нам нужно перейти на Places API .Для реализации автозаполнения Place с использованием нового API Places ... выполните следующие действия.

Сначала включите PlacesAPI в консоли разработчика, затем установите клиентскую библиотеку, обновив ее в gradle.

(Примечание. Вы можете установить только клиентскую библиотеку или библиотеку совместимости, но НЕ обе)

implementation 'com.google.android.libraries.places:places:1.0.0'

Теперь инициализируйте приведенный ниже код внутри Oncreate ();

 // Add an import statement for the client library.
    import com.google.android.libraries.places.api.Places;

    // Initialize Places.
    Places.initialize(getApplicationContext(), "***YOUR API KEY***");

   // Create a new Places client instance.
   PlacesClient placesClient = Places.createClient(this);

Новые PlacesAPI инициализируется ..

Для мест автозаполнения используйте следующий код (Вы также можете использовать фрагмент автозаполнения)

// Set the fields to specify which types of place data to return.
List<Place.Field> fields = Arrays.asList(Place.Field.ID, Place.Field.NAME);
// Start the autocomplete intent.
Intent intent = new Autocomplete.IntentBuilder(
        AutocompleteActivityMode.FULLSCREEN, fields)
        .build(this);
startActivityForResult(intent, AUTOCOMPLETE_REQUEST_CODE);

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == AUTOCOMPLETE_REQUEST_CODE) {
        if (resultCode == RESULT_OK) {
            Place place = Autocomplete.getPlaceFromIntent(data);
            Log.i(TAG, "Place: " + place.getName() + ", " + place.getId());
        } else if (resultCode == AutocompleteActivity.RESULT_ERROR) {
            // TODO: Handle the error.
            Status status = Autocomplete.getStatusFromIntent(data);
            Log.i(TAG, status.getStatusMessage());
        } else if (resultCode == RESULT_CANCELED) {
            // The user canceled the operation.
        }
    }
}
  • Убедитесь, что разрешения вманифест
  • Сгенерирован ключ API.
  • Адреса API мест включены в Dev Console.

УДАЛИТЬ (если вы добавили)

implementation 'com.google.android.gms:play-services-places:16.0.0'

Обязательные заголовочные файлы

import com.google.android.libraries.places.api.Places;
import com.google.android.libraries.places.api.model.Place;
import com.google.android.libraries.places.api.net.PlacesClient;
import com.google.android.libraries.places.widget.Autocomplete;
import com.google.android.libraries.places.widget.AutocompleteActivity;
import com.google.android.libraries.places.widget.model.AutocompleteActivityMode;

Надеюсь, это поможет ..

...