RuntimeExecutionException: com.google.android.gms.common.api.ApiException: 13: ERROR Places API
com google android gms common api apiexception 17 (7)
Agregue el siguiente código en el manifiesto
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
Recibo la siguiente excepción al probar la API de Google Places para obtener lugares de probabilidad para el sitio actual en Android.
Process: me.nabeelkottol.linkedinplaces, PID: 2995
com.google.android.gms.tasks.RuntimeExecutionException:
com.google.android.gms.common.api.ApiException: 13: ERROR
at com.google.android.gms.tasks.zzn.getResult(Unknown Source)
at
me.nabeelkottol.linkedinplaces.MainActivity$1.onComplete(MainActivity.java:71)
at com.google.android.gms.tasks.zzf.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: com.google.android.gms.common.api.ApiException: 13: ERROR
at com.google.android.gms.common.internal.zzb.zzz(Unknown Source)
at com.google.android.gms.common.internal.zzbk.zzaa(Unknown Source)
at com.google.android.gms.common.internal.zzbl.zzs(Unknown Source)
at com.google.android.gms.common.api.internal.zzs.zzc(Unknown Source)
at com.google.android.gms.common.api.internal.zzs.setResult(Unknown Source)
at com.google.android.gms.location.places.zzm.zzao(Unknown Source)
at com.google.android.gms.location.places.internal.zzx.onTransact(Unknown Source)
at android.os.Binder.execTransact(Binder.java:453)
este es mi codigo
try {
Task<PlaceLikelihoodBufferResponse> placeResult = mPlaceDetectionClient.getCurrentPlace(null);
placeResult.addOnCompleteListener(new OnCompleteListener<PlaceLikelihoodBufferResponse>() {
@Override public void onComplete(@NonNull Task<PlaceLikelihoodBufferResponse> task) {
PlaceLikelihoodBufferResponse likelyPlaces = task.getResult();
for (PlaceLikelihood placeLikelihood : likelyPlaces) {
Log.i(TAG,
String.format("Place ''%s'' has likelihood: %g", placeLikelihood.getPlace().getName(),
placeLikelihood.getLikelihood()));
}
likelyPlaces.release();
}
});
} catch (SecurityException e) {
e.printStackTrace();
}
Aquí está la línea PlaceLikelihoodBufferResponse likelyPlaces = task.getResult();
Me está dando el error.
He creado una API key
para la aplicación de Android al dar el nombre del paquete y la clave SHA-1 para la depuración desde la Google API console
de Google API console
. Y enabled Google Places API for android
en la sección de libraries
. Todavía está dando el mismo error. No sé qué está mal con la implementación. Por favor, ayúdame.
Hay un issue reportado en github sobre esto.
Esta es mi app/build.gradle
apply plugin: ''com.android.application''
android {
compileSdkVersion 26
defaultConfig {
applicationId "me.nabeelkottol.linkedinplaces"
minSdkVersion 16
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.pro''
}
}
}
dependencies {
implementation fileTree(dir: ''libs'', include: [''*.jar''])
implementation ''com.android.support:appcompat-v7:26.1.0''
implementation ''com.android.support.constraint:constraint-layout:1.0.2''
compile ''com.google.android.gms:play-services-places:11.6.0''
testImplementation ''junit:junit:4.12''
androidTestImplementation ''com.android.support.test:runner:1.0.1''
androidTestImplementation ''com.android.support.test.espresso:espresso-core:3.0.1''
}
Este es mi AndroidManifest.xml
.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="me.nabeelkottol.linkedinplaces">
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="My API Key here"/>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>
Asegúrese de haber agregado los siguientes metadatos en su archivo de manifiesto.
<application
...
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="YOUR_API_KEY" />
</application>
También puedes ver si hay restricciones de API en tu consola de Google API. Si ha habilitado alguna restricción de API en API_KEY, solo funcionará para la API en particular. Tienes que agregar Places SDK for Android
bajo restricciones API.
DE ACUERDO. Espero que no hayas tenido que perder tanto tiempo como yo para descubrir esto. Pero para que la respuesta de @Umar Ata funcione, debe colocar las dos etiquetas de metadatos en su archivo de manifiesto. Así que debería irse así.
<application>
...
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="PASTE_YOUR_API_KEY_HERE" />
...
</application>
E incluso después de que todo salió bien, me dio un error: PLACES_API_ACCESS_NOT_CONFIGURED 9003 que solucioné al habilitar Places SDK para Android en lugar de la API de Places y las cosas finalmente mejoraron.
Por favor intente seguir la esperanza para que funcione.
1) actualice su / sdk / extras / google / google_play_services e intente nuevamente.
2) Si usa proguard, por favor excluya las clases de google de ofuscación como esta en proguard-rules.pro:
-keep public class com.google.** {*;}
3) Las versiones de libs de play-services deberían ser iguales, por ejemplo:
compile ''com.google.android.gms:play-services-maps:11.6.0''
compile ''com.google.android.gms:play-services-gcm:11.6.0''
4) Acabo de tener este problema, pero lo resolví degradando la versión de Gradle así:
Versión antigua y problemática:
classpath ''com.android.tools.build:gradle:2.2.0-rc2''
Versión fija:
classpath ''com.android.tools.build:gradle:2.3.3''
y no se olvide de agregar la siguiente dependencia en el archivo de nivel de proyecto.
dependencies {
classpath ''com.android.tools.build:gradle:2.3.3''
classpath ''com.google.gms:google-services:3.1.0''
}
Puedes ver una discusión here sobre este tema. Para mí, el problema ocurrió en el emulador pero estaba funcionando en un dispositivo físico.
También experimenté esta excepción cuando se desactivaron las configuraciones de ubicación. Antes de realizar la llamada a la API, asegúrese de haber activado los servicios de ubicación.
Tuve el mismo problema, pude resolverlo habilitando a Google coloca Api desde la consola de Google y agregando lugares api clave. Tan pronto como habilites la API de Lugares, automáticamente te pedirá que agregues la clave de API, solo sigue las instrucciones.
Luego agrega la clave API en tu archivo de manifiesto.
<application
...
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="YOUR_API_KEY" />
</application>
Además, su emulador debe tener los últimos servicios de Google Play instalados. De lo contrario, utilice el dispositivo Android real para la prueba.