Google Places API Android:自动完成关闭太快

Posted

技术标签:

【中文标题】Google Places API Android:自动完成关闭太快【英文标题】:Google Places API Android: Autocompletion closes too quickly 【发布时间】:2017-04-01 03:46:53 【问题描述】:

我在我的 android 应用中添加了地方自动完成功能。当我单击一个按钮 (chooseLocationButton) 时,它会正确打开自动完成小部件。问题是当我想在搜索字段中写一个名字时。单击第一次击键后,自动完成小部件立即关闭,研究尚未完成。 这是它在运行控制台中所写的:

W/IInputConnectionWrapper: reportFullscreenMode on inexistent InputConnection
W/IInputConnectionWrapper: finishComposingText on inactive InputConnection

代码如下:

AutocompleteFilter.Builder a = new AutocompleteFilter.Builder();
    try 
        final Intent intent = new PlaceAutocomplete.IntentBuilder(PlaceAutocomplete.MODE_FULLSCREEN)
                .setFilter(a.setTypeFilter(AutocompleteFilter.TYPE_FILTER_REGIONS).build())
                .build(this);
        chooseLocationButton.setOnClickListener(new View.OnClickListener() 
            @Override
            public void onClick(View v) 

                startActivityForResult(intent, PLACE_AUTOCOMPLETE_REQUEST_CODE);
            
        );
     catch (GooglePlayServicesRepairableException e) 
        e.printStackTrace();
        // TODO handle exception!
     catch (GooglePlayServicesNotAvailableException e) 
        e.printStackTrace();
        // TODO handle exception! Toast?
    

当然,我已经在 Google Developer Console 中启用了 Google Places android API 和 Google Map android API。 我还向 AndroidManifest.xml 添加了 API 密钥,如下所示:

<meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="@string/google_maps_key" />

在日志中我观察到:

BasicNetwork.performRequest: Unexpected response code 400 for https://www.googleapis.com/placesandroid/v1/getAutocompletePredictions...

后跟:

[67738] BasicNetwork.performRequest: Unexpected response code 403 for https://www.googleapis.com/placesandroid/v1/getAutocompletePredictions?key=...11-17 21:02:01.207 1053-1543/? E/Places: PLACES_API_INVALID_APP

在 Android Studio 的运行日志中我有:PLACES_API_KEY_EXPIRED

我希望有人可以帮助我。

谢谢。

【问题讨论】:

你在manifest的application标签中定义了key吗? 是的,它是在应用程序标签@kgandroid中定义的 【参考方案1】:

这听起来确实是一个关键问题。需要仔细检查的事项:

密钥是 Android 密钥,而不是网络密钥。 key上的包名restrict实际上和你应用的包名一致,为signed correctly。 您没有超过每天 1000 个请求的限制。

【讨论】:

我添加了我在 Google API 控制台中创建的 API 密钥。我使用“Android 应用程序”来限制它,这是我在 AndroidManifest.xml 和 SHA-1 顶部找到的包名称(与您与我共享的网站相同)。每天的请求数量远远超过 1000 个限制@AndrewR【参考方案2】:

当我注意到 Google 为 API 密钥创建了一个 .xml 文件并与我放入 string.xml 中的 API 产生冲突时,问题就解决了

【讨论】:

【参考方案3】:

更改 API 密钥解决了我的问题。

您可以从here 生成新密钥

【讨论】:

以上是关于Google Places API Android:自动完成关闭太快的主要内容,如果未能解决你的问题,请参考以下文章

适用于 Android 的 Google Places API 未显示

获取适用于 Android 的 Google Places API 密钥

适用于 Android 的 Google Places API:地图立即消失

Google Places API Android:自动完成关闭太快

Android Google Places API - PlaceAutocompleteFragment 清除按钮监听器

如何为我的 Android 应用获取 Google Places API 密钥