Android Google 地址自动完成 PendingResult 永远等待

Android Google address autocomplete PendingResult awaits forever

我和我的项目队友正在尝试使用 android 的 google API 来获取一个自动完成的地址。 到目前为止,我们正在尝试用一个词来测试它,而不用担心向 autoCompleteView 添加侦听器。无论如何,我们无法使我们的第一个测试工作。 我们的GoogleAPI客户端是这样设置的:

    mGoogleApiClient = new GoogleApiClient.Builder(this)
            .addApi(Places.GEO_DATA_API)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .build();
    mGoogleApiClient.connect(); 

我们有一个连接监听器,它是这样的:

@Override
public void onConnected(Bundle connectionHint) {
    new GetPredictions().execute("boulevard");
}

最后(好吧,不是最后,但这是我们的代码在等待中被阻塞之前所进行的),我们的 AsyncTask class GetPredictions 有一个 doInBackground 方法,如下所示:

    @Override
     protected AutocompletePredictionBuffer doInBackground(String... test) {

        LatLng sudOuestLyon = new LatLng(45.708931, 4.745801);
        LatLng nordEstLyon = new LatLng(45.805918, 4.924447);
        LatLngBounds rectangleLyon = new LatLngBounds(sudOuestLyon, nordEstLyon);

        PendingResult<AutocompletePredictionBuffer> results  =
                Places.GeoDataApi.getAutocompletePredictions(mGoogleApiClient, test[0],
                        rectangleLyon, null);
        AutocompletePredictionBuffer autocompletePredictions = results
                .await();

        return autocompletePredictions;
    }

调试后发现卡在了"await"(并且限时版超时)。我们尝试给它一些时间(几分钟),但应用程序无法通过此方法。研究区(rectangleLyon)是一个长方形,覆盖法国里昂市和部分周边地区。这不是一个很大的区域,也没有太多的林荫大道,所以我们认为在其中搜索 "boulevard" 会很快得到 return 结果。我们怀疑我们的 GoogleApiClient 可能配置不正确,但它可以连接,因为我们传入了仅通过 OnConnected 调用的方法,并且错误的请求不会 returned PendingResult首先,对吧?

为什么这段代码卡在 results.await() 中?

所以,经过更多搜索,问题出在清单中自动声明密钥的行。密钥声明需要有 " android:name="com.google.android.geo.API_KEY" 而不是原来的名称。