且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

RuntimeExecutionException:com.google.android.gms.common.api.ApiException:13:错误Places API

更新时间:2023-11-19 09:05:40

在清单中添加以下代码

 <元数据
android:name =com.google.android.gms.version
android:value =@ integer / google_play_services_version/>


I am getting the following exception while trying out google places API to get likelihood places for Current Place in 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)

this is my 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();
    }

Here the line PlaceLikelihoodBufferResponse likelyPlaces = task.getResult(); is giving me the error.

I have created an API key for the android app by giving the package name and SHA-1 key for debug from Google API console. And enabled Google Places API for android in the libraries section. still its giving the same error. Dont know what is wrong with the implementation. Please help me.

There is an issue reported in github regarding this.

This is my 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'
}

This is my 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>

Add the below code in manifest

 <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />