我正在构建一个Android应用,用于保存从PlaceAutocomplete API检索到的地点ID。稍后,我试图使用getPlaceById()API获取该地点的详细信息。我看到回调永远不会被调用。
我已设置以下权限:
driver.findElement(By.id("Your_FileUpload_id")).sendKeys("C:\\Your_FilePath");
Thread.sleep(2000);
driver.findElement(By.id(uiMaps.getProperty("UploadOption"))).click();
我还添加了API_KEY:
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
但是,我无法检索地点详细信息。 &#34; onResult&#34;似乎永远不会被召唤。任何人都可以帮我解决我可能出错的地方吗?
谢谢!
以下是我正在使用的代码段。为简单起见,在这里硬编码PlaceId:
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value=<API KEY>/>
答案 0 :(得分:2)
我刚刚发现了我错过的东西。我错过了对mGoogleApiClient.connect()的调用;在活动的onStart()中。现在就像魅力一样! :)
以下链接中onCreate()的注释表明,如果活动没有扩展FragmentActivity,我们需要显式调用connect()和disconnect()。
答案 1 :(得分:0)
我遇到了同样的问题。实际上它并没有被调用&#34;但是&#34;还没有运行&#34;。 这是我的错误代码。
public void onClick(View v) {
hideSoftKeyboard();
Log.i("Search Click", "getting Place: " + mMyLocation.id);
if(mMyLocation.id != null) {
Places.GeoDataApi.getPlaceById(mGoogleApiClient, mMyLocation.id)
.setResultCallback(new ResultCallback<PlaceBuffer>() {
@Override
public void onResult(PlaceBuffer places) {
if (places.getStatus().isSuccess() && places.getCount() > 0) {
LatLng coord = places.get(0).getLatLng();
mMyLocation.setLatLng(coord.latitude, coord.longitude);
Log.i("Place by id", "Place found: " + mMyLocation.coordinateString);
} else {
Log.e("Place by id", "Place not found");
}
places.release();
}
});
searchNearby();
}
}
searchNearby()
函数使用mMyLocation
中应更改的onResult
。它还没有被更改,这意味着onResult
在searchNearby()
运行之前尚未被调用。
然后我将函数searchNearby()
放入onResult
并且它有效。
所以我的建议是:将您想要在onResult
之后运行的任何内容放入其中。