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 地点选择器在启动后立即关闭的主要内容,如果未能解决你的问题,请参考以下文章

浓缩咖啡:为啥旋转器在选择后不关闭?

地点选择器已弃用

地点选择器在 Galaxy note5 中不显示搜索图标

更改日期选择器后如何立即清除时间选择器中的内容?

适用于 Android 的 Google Place API:无法使用 Place Picker 的选择器选择地点

使 eternicode 日期选择器在点击时打开,而不是焦点