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
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.
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
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.