Alternativa obsoleta para la API de Android.
google-maps-api-3 google-places-api (4)
Estaba tratando de implementar la API de Places. Mi código se veía así:
val builder = PlacePicker.IntentBuilder()
startActivityForResult(builder.build(mActivity), PLACE_PICKER_REQUEST)
Mis credenciales de mapas eran correctas, pero para esta llamada recibí
Places API for Android does not seem to be enabled for your app. See https://developers.google.com/places/android/signup for more details.
Sin embargo, cuando intenté habilitar la "API de Lugares para Android", recibí este error.
No tiene permisos suficientes para ver esta página.
Intenté desconectarme de mis cuentas, volver a iniciar sesión, modo de incógnito, Safari y Chrome. Nada funcionó, así que me puse en contacto con el soporte, que fue extremadamente rápido (¡gracias chicos!)
El motivo por el que está recibiendo un error al intentar habilitar la API de Places para Android es que ha quedado en desuso. La funcionalidad de Places para Android ahora se cubrirá con la API de Places habilitada.
Pregunté por mi implementación y obtuve esta respuesta.
El selector de lugar también ha sido desaprobado. Puede instalar la biblioteca de compatibilidad para continuar usando el Selector de lugares hasta que el período de desaprobación finalice el 29 de julio. Más sobre esto puede ser rojo aquí: https://developers.google.com/places/android-sdk/client-migration#place_picker
Los documentos que encuentro en línea ahora son un poco confusos, ¿qué es obsoleto y qué no? ¿Alguien puede indicarme la dirección correcta para este tipo de funcionalidad?
A pesar de que Google ha proporcionado una nueva API para el SDK de Lugares, están eliminando el soporte para el Selector de lugares debido a la nueva política de facturación, y hay dos opciones para manejar esto.
-
Puede implementar esta lógica por su cuenta utilizando el nuevo SDK.
-
O, afortunadamente, existe esta biblioteca de Selector de lugares de ping que imita el comportamiento del Selector de lugares anterior.
El SDK de Google Places para Android está en desuso, por lo que necesitamos migrar para la API de Lugares . Para implementar AutoComplete Place usando la nueva API de Places ... siga los pasos a continuación.
Primero habilite PlacesAPI en la consola del desarrollador, luego instale Client Library actualizando en gradle.
(Nota: solo puede instalar la biblioteca cliente o la biblioteca de compatibilidad, NO ambas)
implementation ''com.google.android.libraries.places:places:1.0.0''
Ahora inicialice el código debajo de 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);
Se inicializa New PlacesAPI ..
Para los lugares de Autocompletar, use el siguiente código (También puede usar el Autocompletar Fragmento)
// 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.
}
}
}
- Asegúrese de que los permisos en el manifiesto
- Clave API generada.
- Lugares API está habilitada en Dev Console.
QUITAR (si has añadido)
implementation ''com.google.android.gms:play-services-places:16.0.0''
Archivos de encabezado requeridos
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;
Espero que esto ayude ..
La versión de Google Play Services del SDK de Lugares para Android (en Google Play Services 16.0.0) está en desuso el 29 de enero de 2019 y se desactivará el 29 de julio de 2019. Y si marca bajo la consola de API de Google, solo tiene la API de PLACES y ya no hay nada como PLACES SDK FOR ANDROID.
Guía de migración a nuevos lugares La biblioteca de clientes de SDK se puede encontrar here
O encuentra una implementación personalizada en mi repositorio => NewGooglePlacesSDK
Puede tomar un tiempo para que las teclas comiencen a funcionar. Según los documentos:
Puede tardar hasta 5 minutos para que la clave se aprovisione por completo. Si la tecla no funciona de inmediato, vuelva a intentarlo en 5 minutos.