我和我的项目团队成员正在尝试使用google API for android获取自动填充地址。 到目前为止,我们试图用一个单词来测试它,而不用担心在autoCompleteView中添加一个监听器。无论如何,我们无法进行第一次测试工作。 我们的GoogleAPIClient设置如下:
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类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;
}
经过调试,我们发现我们陷入了“等待”(时间限制版本超时)。我们尝试给它一些时间(几分钟),但应用程序没有通过这种方法。研究区(rectangleLyon)是一个矩形,覆盖法国里昂市和一些周围环境。这不是一个区域,并没有太多的林荫大道,所以我们认为在其中搜索“林荫大道”会很快返回结果。我们怀疑我们的GoogleApiClient可能没有正确配置,但它可以连接,因为我们传入的方法只能通过OnConnected调用,而错误的请求不会首先返回PendingResult,对吧?
为什么此代码卡在results.await()
?
答案 0 :(得分:0)
因此,经过更多搜索后,问题是清单中的自动行声明了密钥。关键声明需要有&#34;机器人:名称=&#34; com.google.android.geo.API_KEY&#34;而不是最初在那里的名字。