web-dev-qa-db-fra.com

RuntimeExecutionException: com.google.Android.gms.common.api.ApiException: 13: API ERROR Places

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>
22
Nabeel K

Ajoutez le code ci-dessous dans le manifeste 

 <meta-data
            Android:name="com.google.Android.gms.version"
            Android:value="@integer/google_play_services_version" />
14
Umar Ata

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.

7
Ashwin

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.

5
at3r

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:.

 After enabling Places API enable other additional APIs from inside the APIs tab.

2
Muhammad Taha

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.

1
Romil

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.

 enter image description here

0
Nas

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'

    } 
0
Dilip