Google 地点选择器在启动后立即关闭
Posted
技术标签:
【中文标题】Google 地点选择器在启动后立即关闭【英文标题】:Google place picker closes immediately after launch 【发布时间】:2019-09-29 10:17:39 【问题描述】:这是一个困扰我好几个星期的问题,但我仍然无法解决。我朋友的谷歌地点选择器有效,但我的却不行(即使我们有相同的代码)。
但在 20-30 次尝试中,它会打开 UI,让我查看我所在位置附近的附近地点(但这种情况非常罕见)。
我已尽我所能。
1) 我已启用 适用于 Android 的 Google Places API 并生成了我的 API 密钥。我还添加了我的 SHA-1 证书指纹和 包名称。
2)我已经在 gradle 中导入了与 google play 服务相关的所有内容。
implementation 'com.google.android.libraries.places:places-compat:1.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
implementation 'com.android.support:support-vector-drawable:26.+'
implementation 'com.google.android.gms:play-services-places:16.0.0'
3)我还在 AndroidManifest.xml 的 application tag 中的 meta-data 中提供了我的 API 密钥
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="@string/google_place_api" />
</application>
4)我已经复制了从 Place-picker 文档站点 https://developers.google.com/places/android-sdk/placepicker 获得的确切代码
PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder();
try
startActivityForResult(builder.build(maps.this), PLACE_PICKER_REQUEST);
catch (
GooglePlayServicesRepairableException e)
e.printStackTrace();
catch (
GooglePlayServicesNotAvailableException e)
e.printStackTrace();
@Override
protected void onActivityResult ( int requestCode, int resultCode, Intent data)
if (requestCode == PLACE_PICKER_REQUEST)
if (resultCode == RESULT_OK)
Place place = PlacePicker.getPlace(data, this);
String toastMsg = String.format("Place: %s", place.getName());
Toast.makeText(this, toastMsg, Toast.LENGTH_LONG).show();
5)我什至为我的项目启用了计费,Google 向我收取了 Re 1。
这对我的项目非常重要,所以请有人帮助我。我求求你了。
编辑:我的 logcat 也出现了某种错误:
Place Picker closing due to PLACES_API_ACCESS_NOT_CONFIGURED
the Google Play services resources were not found. Check your project configuration to ensure that the resources are included.
2019-05-12 08:07:57.106 2818-3899/? E/Volley: [171] BasicNetwork.performRequest: Unexpected response code 403 for https://www.googleapis.com/placesandroid/v1/placePicker?key=AIzaSyCz-bC6nazJur-gHEgVoZMujFDyVvs2n9M
2019-05-12 08:07:57.110 2818-20254/? E/Places: Places API for Android does not seem to be enabled for your app. See https://developers.google.com/places/android/signup for more details.
2019-05-12 08:07:57.112 2818-20254/? E/AsyncOperation: serviceID=65, operation=PlacePickerQuota
EDIT#2:有什么解决办法吗?请回答我。
【问题讨论】:
您的应用在启动后立即关闭?你的意思是坠毁? 它没有显示任何错误,它只是在打开的那一刻关闭。 好的,我将发布我自己的 Google 地点选择器实现。 我的实现和你的基本一样……你检查过你的错误日志吗? 我的日志猫没有错误。 【参考方案1】:您似乎没有启用地点 API,以下是完成该操作的步骤链接。 https://support.google.com/googleapi/answer/6158841?hl=en
如果你检查你的logcat足够好,也许通过选择你想查看的日志类型,你可以选择Error而不是verbose,那么你会看到如下错误
E/Places: Places API for Android does not seem to be enabled for your app. See https://developers.google.com/places/android/signup for more details.
【讨论】:
我已经为 Android 启用了 Places API。我已经仔细检查过。 这很奇怪,我将禁用我的来确认这一点【参考方案2】:我认为该问题与已弃用的 Places SDK for Android 版本有关。您在 gradle 中有以下语句
implementation 'com.google.android.gms:play-services-places:16.0.0'
这是指已弃用的 Google Play 版本的 Places SDK。为了使用 Places SDK 的新静态库,gradle 应该使用
implementation 'com.google.android.libraries.places:places:1.1.0'
请仔细检查新库文档中提到的所有步骤,以确保您正确迁移到新版本:
https://developers.google.com/places/android-sdk/start
我希望这会有所帮助!
【讨论】:
那么我应该从我的build.gradle
中删除implementation 'com.google.android.gms:play-services-places:16.0.0'
吗?
我尝试将implementation 'com.google.android.libraries.places:places-compat:1.1.0'
放入我的依赖项中。但地点选择器仍然关闭。
您是否按照文档中的所有步骤操作?
是的,如果我输入 implementation 'com.google.android.libraries.places:places:1.1.0'
,那么我无法导入地点选择器。但我需要在我的应用中使用地点选择器。以上是关于Google 地点选择器在启动后立即关闭的主要内容,如果未能解决你的问题,请参考以下文章