2017-11-14 3 views
14

Ich erhalte die folgende Ausnahme beim Ausprobieren von Google Places API, um Wahrscheinlichkeitsstellen für Current Place in Android zu erhalten.RuntimeExecutionException: com.google.android.gms.common.api.ApiException: 13: Fehler Places API

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) 

dies ist mein 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(); 
    } 

Hier ist die Linie PlaceLikelihoodBufferResponse likelyPlaces = task.getResult(); wird mir den Fehler geben.

Ich habe eine API key für die Android-App erstellt, indem Sie den Paketnamen und SHA-1-Schlüssel für das Debug von Google API console geben. Und enabled Google Places API for android in der libraries Abschnitt. Trotzdem gibt es denselben Fehler. Ich weiß nicht, was mit der Implementierung nicht stimmt. Bitte hilf mir.

Es gibt eine berichtet in github diesbezüglich.

Das ist mein 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' 
} 

Das ist mein AndroidManifest.xml ist.

<?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> 
+0

können Sie bitte Ihre build.gradle-Datei posten. – Dilip

+0

@Dilip aktualisiert. pls check –

+0

Haben Sie 'API'-Schlüssel in Ihrer' Manifest'-Datei hinzugefügt? –

Antwort

5

den Code unten in manifest

hinzufügen wurden ausgeschaltet
<meta-data 
      android:name="com.google.android.gms.version" 
      android:value="@integer/google_play_services_version" /> 
4

Ich hatte das gleiche Problem, ich war in der Lage, es zu lösen, die Google Places API von Google-Konsole ermöglicht und Orte api Schlüssel hinzufügen. Sobald Sie die Places-API aktivieren, werden Sie automatisch aufgefordert, einen API-Schlüssel hinzuzufügen. Folgen Sie einfach den Anweisungen.

Fügen Sie dann den API-Schlüssel in Ihrer Manifestdatei hinzu.

<application 
    ... 

    <meta-data 
     android:name="com.google.android.geo.API_KEY" 
     android:value="YOUR_API_KEY" /> 

</application> 

Außerdem sollten auf Ihrem Emulator die neuesten Google Play-Dienste installiert sein. Ansonsten benutze ein echtes Android-Gerät zum Testen.

+1

Ich habe dies getan, aber das Problem ist nicht gelöst. –

0

Bitte versuchen Sie folgende Hoffnung, damit es funktioniert.

1) Bitte aktualisieren Sie Ihre \ sdk \ extras \ google \ google_play_services und versuchen Sie es erneut.

2) Wenn Sie die Verwendung proguard sind bitte google Klassen ausgeschlossen von in proguard-rules.pro wie diese Verschleierung:

-keep public class com.google.** {*;} 

3) Versionen von Play-Dienste libs sollte gleich sein, zum Beispiel:

compile 'com.google.android.gms:play-services-maps:11.6.0' 
compile 'com.google.android.gms:play-services-gcm:11.6.0' 

4) ich habe gerade dieses Problem aber gelöst durch die gradle Version Herabstufung wie so:

Alt, mühsam Version:

classpath 'com.android.tools.build:gradle:2.2.0-rc2' 

Festgelegte Version:

classpath 'com.android.tools.build:gradle:2.3.3' 

und vergessen Sie nicht folgende Abhängigkeit in der Projektebene gradle Datei hinzuzufügen.

dependencies { 
     classpath 'com.android.tools.build:gradle:2.3.3' 
     classpath 'com.google.gms:google-services:3.1.0' 

    } 
+0

Es ist ein Beispiel und ich laufe im Debug-Modus ohne prouard. Und ich benutze diese Gradle-Version 'com.android.tools.build: grandle: 3.0.0' –

+0

ok @ Nabeel immer noch bekommen Sie gleichen Fehler .. – Dilip

1

ich diese Ausnahme auch Einstellungen, wenn Standort erfahren. Stellen Sie vor dem API-Aufruf sicher, dass Sie die Standortdienste aktiviert haben.

+0

habe die Lösung. Siehe @ Umars Antwort. –

+0

Wenn die Standortdienste deaktiviert sind, tritt derselbe Fehler auf. Behalte das im Hinterkopf – Romil

3

Sie können eine Diskussion here über dieses Problem sehen. Für mich trat das Problem auf dem Emulator auf, aber es funktionierte auf einem physischen Gerät.