Как разрешить PLACES_API_ACCESS_NOT_CONFIGURED в месте автозаполнения фрагмента - PullRequest
0 голосов
/ 13 февраля 2019

У меня проблемы с Android Google Places API - функция автозаполнения.Я использую тот же ключ, который я использовал для Android API Карт Google, но это не фрагмент открытого места.На нем отображаются только карты, но при открытии фрагмента автозаполнения, но при его открытии и закрытии автоматически показывается ошибка PLACES_API_ACCESS_NOT_CONFIGURED.Пожалуйста, помогите мне решить эту проблему и покажите, как справиться с этой проблемой.Вот мой манифест XML:

  <meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="AIzaSyARQ78yaNEJH12aJLM1Y-112WY12p95ZOEGI"/>

И вот мой код для открытого места AutocolmpleteFragment:

 try {
                Intent intent =
                        new PlaceAutocomplete.IntentBuilder(PlaceAutocomplete.MODE_FULLSCREEN)
                                .build(getActivity());
                startActivityForResult(intent, 1);

            } catch (GooglePlayServicesRepairableException | GooglePlayServicesNotAvailableException e) {

                // TODO: Handle the error.

            }

А вот мой код для получения ответа о месте:

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == 1) {
        if (resultCode ==RESULT_OK) {
            Place place = PlaceAutocomplete.getPlace(getActivity(), data);
            onPlaceSelected(place,1);
            bar.setVisibility(View.GONE);
            autoCompleteTextViewPickup.setFocusable(true);
        } else if (resultCode == PlaceAutocomplete.RESULT_ERROR) {

            Status status = PlaceAutocomplete.getStatus(getActivity(), data);
            this.onError(status,1);
            bar.setVisibility(View.GONE);
            autoCompleteTextViewPickup.setFocusable(true);
        }
    }

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

У меня возникла та же проблема, но я смог ее исправить.

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

В разделе зависимостей вашего файла build.gradle уровня приложения добавьте зависимость для новой клиентской библиотеки SDK, как показано в следующем примере:

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

Затем вы инициализируете ее.

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

...

// Initialize Places.
Places.initialize(getApplicationContext(), apiKey);

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

Программное автозаполнение

В автозаполнение были внесены следующие изменения: PlaceAutocomplete переименовано в Автозаполнение.PlaceAutocomplete.getPlace переименовывается в Autocomplete.getPlaceFromIntent.PlaceAutocomplete.getStatus переименовывается в Autocomplete.getStatusFromIntent.PlaceAutocomplete.RESULT_ERROR переименовывается в AutocompleteActivity.RESULT_ERROR (обработка ошибок для фрагмента автозаполнения НЕ изменилась).

Если вы используете виджет автозаполнения, как в моем случае, вы можете использовать это.

<fragment
  android:id="@+id/autocomplete_fragment"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:name=
"com.google.android.libraries.places.widget.AutocompleteSupportFragment"
  />

Затем инициализируйте места

/**
 * Initialize Places. For simplicity, the API key is hard-coded. In a production
 * environment we recommend using a secure mechanism to manage API keys.
 */
if (!Places.isInitialized()) {
    Places.initialize(getApplicationContext(), "YOUR_API_KEY");
}

// Initialize the AutocompleteSupportFragment.
AutocompleteSupportFragment autocompleteFragment = (AutocompleteSupportFragment)
        getSupportFragmentManager().findFragmentById(R.id.autocomplete_fragment);

autocompleteFragment.setPlaceFields(Arrays.asList(Place.Field.ID, Place.Field.NAME));

autocompleteFragment.setOnPlaceSelectedListener(new PlaceSelectionListener() {
    @Override
    public void onPlaceSelected(Place place) {
        // TODO: Get info about the selected place.
        Log.i(TAG, "Place: " + place.getName() + ", " + place.getId());
    }

    @Override
    public void onError(Status status) {
        // TODO: Handle the error.
        Log.i(TAG, "An error occurred: " + status);
    }
});

Проверьте здесь для получения дополнительной информации

Переход на SDK нового места

0 голосов
/ 13 февраля 2019

похоже, что вы получаете PLACES_API_ACCESS_NOT_CONFIGURED предупреждение, потому что у вас нет конфигурации, которую необходимо выполнить:

1) Перейти к облачная платформа Google

2) Включить API места внутри консоли

3) Если вы уже это сделали - вам необходимо проверить2 вещи:

3-A) Актуален ли ваш ключ API? (На странице учетных данных)

3-B) На странице учетных данных - проверьте наличие каких-либо ограничений, которые могут помешать вам получить доступ к API.

...