Je reçois l’exception suivante lors de l’essai de l’API Google Places pour obtenir des emplacements de probabilité pour Current Place dans 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)
c'est 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();
}
Ici, la ligne PlaceLikelihoodBufferResponse likelyPlaces = task.getResult();
me donne l'erreur.
J'ai créé un API key
pour l'application Android en donnant le nom du package et la clé SHA-1 pour le débogage à partir de Google API console
. Et enabled Google Places API for Android
dans la section libraries
. toujours sa donnant la même erreur. Ne sais pas ce qui ne va pas avec la mise en œuvre. Aidez-moi, s'il vous plaît.
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'
}
Ceci 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>
Ajoutez 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 été en mesure de le résoudre en activant Google Api endroits à partir de la console Google et en ajoutant des lieux clé API. Dès que vous activez l’API Places, il vous demandera automatiquement d’ajouter une clé API, il vous suffit de suivre les instructions.
Ajoutez ensuite la clé API dans votre fichier manifeste.
<application
...
<meta-data
Android:name="com.google.Android.geo.API_KEY"
Android:value="YOUR_API_KEY" />
</application>
En outre, les derniers services Google Play devraient être installés sur votre émulateur. Sinon, utilisez un vrai appareil Android pour les tests.
Vous pouvez voir une discussion ici à propos de cette question. Pour moi, le problème s'est produit sur l'émulateur, mais il fonctionnait sur un périphérique physique.
D'ACCORD. J'espère que vous n'avez pas eu à perdre autant de temps que moi à découvrir cela. Mais pour que la réponse de @Umar Ata fonctionne, vous devez insérer les deux balises meta-data de votre fichier manifeste. Donc ça 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 tout corrigé, cela m'a donné l'erreur suivante:.
J'ai également rencontré cette exception lorsque les paramètres d'emplacement étaient désactivés. Avant de passer l'appel de l'API, assurez-vous d'avoir activé les services de localisation.
Assurez-vous d'avoir ajouté les méta-données suivantes dans votre fichier manifeste.
<application
...
<meta-data
Android:name="com.google.Android.geo.API_KEY"
Android:value="YOUR_API_KEY" />
</application>
Recherchez également les restrictions d’API dans votre console API Google. Si vous avez activé une restriction d'API sur API_KEY, cela ne fonctionnera que pour l'API en question. Vous devez ajouter Places SDK for Android
dans les restrictions de l'API.
S'il vous plaît essayez de suivre l'espoir afin que cela fonctionne.
1) veuillez mettre à jour votre\sdk\extras\google\google_play_services et essayez à nouveau.
2) Si vous utilisez proguard, veuillez exclure les classes de Google de cette manière dans proguard-rules.pro:
-keep public class com.google.** {*;}
3) Les versions des bibliothèques 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 rétrogradant la version de gradle de la manière suivante:
Ancienne version gênante:
classpath 'com.Android.tools.build:gradle:2.2.0-rc2'
Version fixe:
classpath 'com.Android.tools.build:gradle:2.3.3'
et n'oubliez pas d'ajouter la dépendance suivante dans le fichier de niveaux au niveau du projet.
dependencies {
classpath 'com.Android.tools.build:gradle:2.3.3'
classpath 'com.google.gms:google-services:3.1.0'
}