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>
20
demandé sur Nabeel K 2017-11-14 09:37:38

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" />
8
répondu Umar Ata 2017-11-23 06:24:57

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.

6
répondu Ashwin 2017-11-24 08:00:25

Vous pouvez voir une discussion ici à propos de ce problème. Pour moi le problème s'est produit sur l'émulateur mais il travaillait sur un dispositif physique.

5
répondu at3r 2017-11-23 19:11:00

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.

1
répondu Romil 2017-11-23 07:17:40

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'

    } 
0
répondu Dilip 2017-11-21 11:45:46

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.

enter image description here

0
répondu Nas 2018-09-11 07:23:44

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.

0
répondu Muhammad Taha 2018-09-30 17:12:22