wake-up-neo.com

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

Beim Ausprobieren der Google Places-API erhalte ich die folgende Ausnahme, um Wahrscheinlichkeitsstellen für Current Place in Android zu erhalten.

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)

das 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 gibt mir die Zeile PlaceLikelihoodBufferResponse likelyPlaces = task.getResult(); den Fehler.

Ich habe einen API key für die Android-App erstellt, indem ich den Paketnamen und den SHA-1-Schlüssel zum Debuggen von Google API console angegeben habe. Und enabled Google Places API for Android im Abschnitt libraries. es ist immer noch derselbe Fehler. Weiß nicht, was an der Implementierung falsch ist. Bitte hilf mir.

In github wurde darüber ein issue berichtet.

Dies 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'
}

Dies ist mein 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

Fügen Sie den folgenden Code im Manifest hinzu 

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

Ich hatte das gleiche Problem. Ich konnte es lösen, indem ich Google Orte für Api von der Google-Konsole aus aktiviert und Orte für API-Schlüssel hinzufügte. 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 Ihre Manifestdatei ein.

<application
    ...

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

</application>

In Ihrem Emulator sollten außerdem die neuesten Google Play-Dienste installiert sein. Verwenden Sie sonst zum Testen ein echtes Android-Gerät.

7
Ashwin

Sie können eine Diskussion hier zu diesem Thema sehen. Für mich ist das Problem auf dem Emulator aufgetreten, aber es funktionierte auf einem physischen Gerät.

5
at3r

OK. Ich hoffe, Sie mussten nicht so viel Zeit verlieren wie ich, um das herauszufinden. Damit die Antwort von @Umar Ata funktioniert, müssen Sie beide Metadaten-Tags in Ihre Manifestdatei einfügen. Also sollte es so gehen.

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

Und selbst nachdem ich alles richtig gemacht hatte, gab es eine Fehlermeldung: PLACES_API_ACCESS_NOT_CONFIGURED 9003 Ich wurde behoben, indem ich Places SDK für Android aktivierte und die Dinge endlich gut wurden.

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

2
Muhammad Taha

Diese Ausnahme trat auch auf, wenn die Standorteinstellungen deaktiviert waren. Stellen Sie vor dem Aufruf der API sicher, dass Sie die Standortdienste aktiviert haben.

1
Romil

Nun, in meinem Fall beide com.google.Android.gms.version und com.google.Android.geo.API_KEY wurden bereits im Manifest hinzugefügt. Warum ist dieser Fehler aufgetreten, weil ich mein Projekt auf ein neues System umgestellt habe? Der sha1-Schlüssel stimmte nicht mit der Liste überein.

Was ich getan habe, um diesen Fehler zu beheben, ist: Ich habe einen neuen SHA1 von meinem neuen System generiert und diesen SHA1 unter hinzugefügt

credentials => API Key => dann Add package name und SHA1

von Setzt SDK für Android

0
Suraj Vaishnav

Stellen Sie sicher, dass Sie die folgenden Metadaten in Ihre Manifestdatei eingefügt haben.

<application
    ...

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

</application>

Überprüfen Sie auch die API-Einschränkungen in Ihrer Google API-Konsole. Wenn Sie eine API-Einschränkung für API_KEY aktiviert haben, funktioniert sie nur für die bestimmte API. Sie müssen Places SDK for Android unter API-Einschränkungen hinzufügen.

 enter image description here

0
Nas

Bitte versuchen Sie es mit der Hoffnung, damit es funktioniert.

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

2) Wenn Sie Proguard verwenden, schließen Sie bitte Google-Klassen von der Verschleierung in proguard-rules.pro aus:

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

3) Versionen von Play-Services-Bibliotheken sollten 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 hatte dieses Problem nur, aber ich habe es gelöst, indem ich die Gradle-Version so heruntergestuft habe:

Alte, lästige Version:

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

Feste Version:

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

vergessen Sie nicht, die folgende Abhängigkeit in der Gradle-Datei auf Projektebene hinzuzufügen.

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

    } 
0
Dilip