RuntimeExecutionException: com.Google.Android.gms.commun.API.ApiException: 13: L'API des lieux D'erreur
je reçois l'exception suivante lors de l'essai de l'API googlesplaces pour obtenir des lieux de vraisemblance pour Place Actuelle sur 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.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)
voici mon code:
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();
}
Voici la ligne PlaceLikelihoodBufferResponse likelyPlaces = task.getResult();
me donne l'erreur.
j'ai créé une API key
pour l'application android en donnant le nom du paquet et la clé SHA - 1 pour le débogage à partir de Google API console
. Et enabled Google Places API for android
dans le libraries
section. encore sa de donner la même erreur. Je sais pas quoi est le problème avec la mise en œuvre. S'il vous plaît aider moi.
Il y a un problème rapporté dans github à ce sujet.
C'est mon 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'
}
C'est mon 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>
7 réponses
Ajouter le code ci-dessous dans le manifeste
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
j'ai eu le même problème, j'ai pu le résoudre en activant L'Api googlesplaces depuis Google console et en ajoutant la clé api places. Dès que vous activez L'api Places, il vous demandera automatiquement d'ajouter la clé api, il vous suffit de suivre les instructions.
puis Ajouter la clé API dans votre fichier manifest.
<application
...
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="YOUR_API_KEY" />
</application>
En outre, votre émulateur doit avoir les derniers services Google Play installés. Sinon, utilisez un vrai appareil Android pour les tests.
j'ai également connu cette exception lorsque les paramètres de localisation étaient désactivés. Avant de faire l'appel d'API assurez-vous que vous avez activé les services de localisation.
s'il vous plaît essayez de suivre l'espoir pour que cela fonctionne.
1) Veuillez mettre à jour votre \sdk\extras\google\google_play_services et réessayez.
2) Si vous utilisez proguard s'il vous plaît exclu Google classes de brouillage comme ceci dans proguard-règles.pro:
-keep public class com.google.** {*;}
3) les Versions des libs de play-services doivent être égales, par exemple:
compile 'com.google.android.gms:play-services-maps:11.6.0'
compile 'com.google.android.gms:play-services-gcm:11.6.0'
4) je viens d'avoir ce problème mais je l'ai résolu en déclassant la version Grad comme donc:
Vieux, ennuyeux version:
classpath 'com.android.tools.build:gradle:2.2.0-rc2'
version corrigée:
classpath 'com.android.tools.build:gradle:2.3.3'
et n'oubliez pas d'ajouter la dépendance suivante dans le fichier gradle au niveau du projet.
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
classpath 'com.google.gms:google-services:3.1.0'
}
assurez-vous d'avoir ajouté les méta-données suivantes dans votre fichier de manifestes.
<application
...
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="YOUR_API_KEY" />
</application>
vérifiez également les restrictions de L'API dans votre console de L'API Google. Si vous avez activé une restriction de L'API à L'API_KEY, alors cela ne fonctionnera que pour l'API en question. Vous devez ajouter Places SDK for Android
selon les restrictions de L'API.
OK. J'espère que vous n'avez pas perdu autant de temps que moi pour le découvrir. Mais pour que la réponse de @Umar Ata fonctionne, vous devez mettre les deux balises meta-data dans votre fichier manifest. Donc, il devrait aller comme ça.
<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>
et même après avoir obtenu tout droit il m'a donné l'erreur: PLACES_API_ACCESS_NOT_CONFIGURED 9003 ce que j'ai corrigé en activant le SDK Places pour Android au lieu de L'API Places et les choses se sont finalement bien passées.