谷歌没有调用getPlaceById回调

时间:2016-01-11 08:50:37

标签: android google-maps google-places-api android-googleapiclient

我正在构建一个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>/>

2 个答案:

答案 0 :(得分:2)

我刚刚发现了我错过的东西。我错过了对mGoogleApiClient.connect()的调用;在活动的onStart()中。现在就像魅力一样! :)

以下链接中onCreate()的注释表明,如果活动没有扩展FragmentActivity,我们需要显式调用connect()和disconnect()。

https://github.com/tangqi92/MyGooglePlaces/blob/master/app/src/main/java/itangqi/me/mygoogleplaces/MainActivity.java

答案 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。它还没有被更改,这意味着onResultsearchNearby()运行之前尚未被调用。 然后我将函数searchNearby()放入onResult并且它有效。

所以我的建议是:将您想要在onResult之后运行的任何内容放入其中