How to resolve “Places API for Android does not seem to be enabled for your app”

前端 未结 1 929
故里飘歌
故里飘歌 2021-01-15 18:37

This error has been bugging me since more than a Day now. I have Already searched thoroughly, but none of the answer provided a solution for me. I have properly set up the A

相关标签:
1条回答
  • 2021-01-15 19:06

    Notice: The Google Play Services version of the Places SDK for Android (in Google Play Services 16.0.0) is deprecated as of January 29, 2019, and will be turned off on July 29, 2019. A new version of the Places SDK for Android is now available. We recommend updating to the new version as soon as possible. For details, see the migration guide.

    You can check the above message in this link under Depreciation notice.

    Place APIs are moved to a separate library instead of Google Play Services. So you have to migrate to New Place API library.


    You can follow this migration guideline or below code to integrate Places SDK for Android.

    1. Add this dependency in app level build.gradle file:
    implementation 'com.google.android.libraries.places:places:1.0.0'

    Note: minSdkVersion of your application project should be 14 or higher

    2. Initialize Places in your Activity.
    Places.initialize(getApplicationContext(), YOUR_API_KEY);

    3. Call below function when you want to open PlaceAutocomplete Activity

    private void startAutocompleteActivity() {
            List<com.google.android.libraries.places.api.model.Place.Field> placeFields = new ArrayList<>(Arrays.asList(com.google.android.libraries.places.api.model.Place.Field.values()));
            List<TypeFilter> typeFilters = new ArrayList<>(Arrays.asList(TypeFilter.values()));
    // Create a RectangularBounds object.
      RectangularBounds bounds = RectangularBounds.newInstance(
        new LatLng(-33.880490, 151.184363),
        new LatLng(-33.858754, 151.229596));
            Intent autocompleteIntent =
                    new Autocomplete.IntentBuilder(AutocompleteActivityMode.FULLSCREEN, placeFields)
                            .setLocationBias(bounds)
                            .setTypeFilter(typeFilters.get(0))
                            .build(this);
            startActivityForResult(autocompleteIntent, 1001);
        }  
    

    4. Write below code of onActivityResult

    /**
         * Override the activity's onActivityResult(), check the request code, and
         * do something with the returned place data (in this example it's place name and place ID).
         */
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            if (requestCode == 1001) {
                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.
                }
            }
        }
    


    You can check this Demo application for more detail


    Now most important thing is that you have to enable billing to use New Place API for Android.

    To use the Places SDK for Android, you must include an API key with all API requests and you must enable billing on each of your projects.

    Check this link for more info and pricing.

    SKU: Basic Data

    Fields in the Basic category are included in the base cost of the Places request, and do not result in any additional charge. The Basic Data SKU is triggered when any of these fields are requested: ADDRESS, ID, LAT_LNG, NAME, OPENING_HOURS, PHOTO_METADATAS, PLUS_CODE, TYPES, USER_RATINGS_TOTAL, VIEWPORT.

    You can check pricing and other SKUs in the same link given above.

    0 讨论(0)
提交回复
热议问题