Android Google Places API, getAutocompletePredictions returns status 'PLACES_API_ACCESS_NOT_CONFIGURED'
Enable the Google Places API for Android in developers console and check on the credentials page that your key is still present
ApiException: 9003: PLACES_API_ACCESS_NOT_CONFIGURED
Many friends suggested me to post how I have implemented this(AutoComplete) on my Project .So I am suggested you to see this migration guide and implement on your project step by step.
Migration Guide:-https://developers.google.com/places/android-sdk/client-migration
GO to this link to create API Key:
Follows this steps to implement AutoComplete in your project :-
There is two way to implement to AutoComplete .
- Using Intent
Using AutocompleteFragment
In both case follow these steps:-
1. Add this line in build.gradle file
dependencies {
implementation 'com.google.android.libraries.places:places:2.1.0'
}
2. Add other dependencies (This is optional) .
dependencies {
implementation 'com.google.android.libraries.places:places-compat:1.0.0'
}
implementation 'com.google.android.gms:play-services-places:16.0.0'
3. // 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);----------Now Choose any of the method you want to implement in your project.-----
Using Intent
if (!Places.isInitialized()) {
Places.initialize(getApplicationContext(), "YOUR_API_KEY");
}
...
// 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);
and OnActivityResult method-------
/**
* 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 == 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.
}
}
}Using Fregment
Initialize this Autocomplete Fregment on .xml file
<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"
/>-------------- and on .class file--------------------------
Initialize Places, passing the application context and your API key.
Initialize the AutocompleteSupportFragment.
Call setPlaceFields() to indicate the types of place data that you want to get.
Add a PlaceSelectionListener to do something with the result, as well as handle any errors that might occur.
The following example shows adding an autocomplete widget to an activity: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);
}
});
And Get LATLONG from selected place like this:-
LatLng latLng = place.getLatLng();
String mStringLatitude = String.valueOf(latLng.latitude);
String mStringLongitude = String.valueOf(latLng.longitude);
Hope this will help you .
Related Topics
How to Have a Transparent Imagebutton: Android
Android How to Turn on Do Not Disturb (Dnd) Programmatically
Android, How to Not Destroy the Activity When I Rotate the Device
Apache Httpclient on Android Producing Certpathvalidatorexception (Issuername != Subjectname)
Update Android Sdk Tool to 22.0.4(Latest Version) from 22.0.1
Android Vpnservice to Capture Packets Won't Capture Packets
Show and Hide a View With a Slide Up/Down Animation
Bluetooth and Wifi Printing for Android
Android Character by Character Display Text Animation
Differencebetween Background, Backgroundtint, Backgroundtintmode Attributes in Android Layout Xml
How to Use Mapview in Android Using Google Map V2
Android Device Chooser - My Device Seems Offline
How to Start an Intent by Passing Some Parameters to It
Closing the Database in a Contentprovider
Replace One Fragment with Another in Viewpager