RuntimeExecutionException:com.google.android.gms.common.api.ApiException:13:错误位置 API
RuntimeExecutionException: com.google.android.gms.common.api.ApiException: 13: ERROR Places API
我在尝试 google 个位置 API 以获取 android 中 Current Place 的可能性位置时遇到以下异常。
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)
这是我的代码:
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 应用程序创建了一个 API key
,方法是提供程序包名称和用于从 Google API console
进行调试的 SHA-1 密钥。 libraries
部分中的 enabled Google Places API for android
。仍然给出相同的错误。不知道实施有什么问题。请帮助我。
在 github 中有一个关于此的 issue 报告。
这是我的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>
我有同样的问题,我可以通过从 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 设备进行测试。
请尝试以下希望,这样它就会起作用。
1) 请更新您的 \sdk\extras\google\google_play_services 并重试。
2) 如果您使用混淆器,请排除 google 类 在混淆器中像这样进行混淆-rules.pro:
-keep public class com.google.** {*;}
3) play-services 库的版本应该相同,例如:
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'
}
在清单中添加以下代码
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
当位置设置被关闭时,我也遇到了这个异常。在拨打 API 电话之前,请确保您已开启定位服务。
您可以看到关于此问题的讨论 here。对我来说,问题发生在模拟器上,但它是在物理设备上工作的。
确保您已在清单文件中添加以下元数据。
<application
...
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="YOUR_API_KEY" />
</application>
同时检查您的 Google API 控制台中是否存在任何 API 限制。如果您启用了对 API_KEY 的任何 API 限制,那么它将只对特定的 API 有效。您必须在 API 限制条件下添加 Places SDK for Android
。
好的。我希望你不必像我一样浪费那么多时间来找出这一点。但是要使@Umar Ata 的答案有效,您需要在清单文件中放入两个元数据标记。所以它应该是这样的。
<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>
即使在一切都正确之后,它还是给了我错误:
PLACES_API_ACCESS_NOT_CONFIGURED9003
我通过为 Android 启用 Places SDK 解决了这个问题,事情终于顺利了。
嗯,就我而言,com.google.android.gms.version
和 com.google.android.geo.API_KEY
都已添加到清单中。
为什么会出现这个错误,因为我将我的项目切换到一个新系统,sha1 密钥与列表不匹配。
我为解决此错误所做的是:
我从我的新系统生成了新的 SHA1,并在
下添加了这个 SHA1
credentials=> API Key=> then Add package name and SHA1
的 用于 Android
的 Places SDK
我刚刚通过修复我在设备上的权限解决了这个错误。当我应该请求 ALLOW_BACKGROUND_LOCATION 时,我请求了 ALLOW_FINE_LOCATION。只是想我会把它放在这里,以便人们知道这个错误可能与您的 API 密钥无关。 “例外 13”似乎是某种包罗万象的东西。
我在尝试 google 个位置 API 以获取 android 中 Current Place 的可能性位置时遇到以下异常。
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)
这是我的代码:
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 应用程序创建了一个 API key
,方法是提供程序包名称和用于从 Google API console
进行调试的 SHA-1 密钥。 libraries
部分中的 enabled Google Places API for android
。仍然给出相同的错误。不知道实施有什么问题。请帮助我。
在 github 中有一个关于此的 issue 报告。
这是我的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>
我有同样的问题,我可以通过从 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 设备进行测试。
请尝试以下希望,这样它就会起作用。
1) 请更新您的 \sdk\extras\google\google_play_services 并重试。
2) 如果您使用混淆器,请排除 google 类 在混淆器中像这样进行混淆-rules.pro:
-keep public class com.google.** {*;}
3) play-services 库的版本应该相同,例如:
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'
}
在清单中添加以下代码
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
当位置设置被关闭时,我也遇到了这个异常。在拨打 API 电话之前,请确保您已开启定位服务。
您可以看到关于此问题的讨论 here。对我来说,问题发生在模拟器上,但它是在物理设备上工作的。
确保您已在清单文件中添加以下元数据。
<application
...
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="YOUR_API_KEY" />
</application>
同时检查您的 Google API 控制台中是否存在任何 API 限制。如果您启用了对 API_KEY 的任何 API 限制,那么它将只对特定的 API 有效。您必须在 API 限制条件下添加 Places SDK for Android
。
好的。我希望你不必像我一样浪费那么多时间来找出这一点。但是要使@Umar Ata 的答案有效,您需要在清单文件中放入两个元数据标记。所以它应该是这样的。
<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>
即使在一切都正确之后,它还是给了我错误: PLACES_API_ACCESS_NOT_CONFIGURED9003 我通过为 Android 启用 Places SDK 解决了这个问题,事情终于顺利了。
嗯,就我而言,com.google.android.gms.version
和 com.google.android.geo.API_KEY
都已添加到清单中。
为什么会出现这个错误,因为我将我的项目切换到一个新系统,sha1 密钥与列表不匹配。
我为解决此错误所做的是: 我从我的新系统生成了新的 SHA1,并在
下添加了这个 SHA1credentials=> API Key=> then Add package name and SHA1
的 用于 Android
的 Places SDK我刚刚通过修复我在设备上的权限解决了这个错误。当我应该请求 ALLOW_BACKGROUND_LOCATION 时,我请求了 ALLOW_FINE_LOCATION。只是想我会把它放在这里,以便人们知道这个错误可能与您的 API 密钥无关。 “例外 13”似乎是某种包罗万象的东西。