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

我在尝试使用Google Places API获取Android中当前位置的可能位置时出现以下exception。

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) 

这是我的代码:

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

这里的行PlaceLikelihoodBufferResponse likelyPlaces = task.getResult(); 给我的错误。

我已经为Android应用程序创build了一个API key ,方法是从Google API console提供程序包名称和SHA-1密钥进行debugging。 并在libraries部分enabled Google Places API for android 。 仍然给它同样的错误。 不知道什么是错误的实施。 请帮帮我。

有关github报道的一个问题 。

这是我的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' } 

这是我的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> 

Solutions Collecting From Web of "RuntimeExecutionException:com.google.android.gms.common.api.ApiException:13:错误Places API"

在清单中添加下面的代码

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

你可以在这里看到关于这个问题的讨论。 对我来说,模拟器上发生了问题,但它在物理设备上工作。

当位置设置被closures时,我也遇到了这个exception。 在进行API调用之前,请确保您已经打开了位置服务。

我有同样的问题,我能够通过启用Google从Google控制台放置Api并添加位置API密钥来解决它。 只要启用Places api,它就会自动要求您添加API密钥,只需按照说明进行操作即可。

然后将API密钥添加到清单文件中。

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

另外,您的模拟器应该安装最新的Google Play服务。 否则使用真正的Android设备进行testing。

请尝试下面的希望,以便它将工作。

1)请更新您的\ sdk \ extras \ google \ google_play_services并重试。

2)如果你使用proguard请排除谷歌类在这样混淆在proguard-rules.pro:

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

3)游戏服务库的版本应该是相等的,例如:

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

4)我刚刚遇到了这个问题,但通过降级Gradle版本来解决它:

老,麻烦的版本:

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

修正版本:

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

并且不要忘记在项目级gradle文件中添加以下依赖项。

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