getCurrentPlace onResult不返回结果

时间:2017-02-13 20:47:32

标签: android google-places-api

我一直在尝试测试Google Places API的getCurrentPlace()方法。当我第一次测试它几次时,它没有问题,但现在它突然停止工作。我已经卸载了应用程序,删除了代码并重新粘贴了文档,关闭了Android Studio。我不知道出了什么问题并且日志没有错误,他们只是不记录用于登录的内容。

View.OnClickListener getNearbyPlaces = new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        places = new FindNearbyPlaces();
        placesArray = new ArrayList<>();
        try {
            placesArray = places.findNearbyPlaces(mCurrentLocation);
        } catch (Exception e) {
            e.printStackTrace();
        }

        for (PlacesAttributes place : placesArray) {
            Log.i("Name: ", place.getName());
            Log.i("Lat: ", String.valueOf(place.getLat()));
            Log.i("Lng: ", String.valueOf(place.getLng()));
        }

        if (ActivityCompat.checkSelfPermission(getApplicationContext(), android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            // TODO: Consider calling
            //    ActivityCompat#requestPermissions
            // here to request the missing permissions, and then overriding
            //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
            //                                          int[] grantResults)
            // to handle the case where the user grants the permission. See the documentation
            // for ActivityCompat#requestPermissions for more details.
            return;
        }
        PendingResult<PlaceLikelihoodBuffer> result = Places.PlaceDetectionApi
                .getCurrentPlace(mGoogleApiClient, null);
        result.setResultCallback(new ResultCallback<PlaceLikelihoodBuffer>() {
            @Override
            public void onResult(PlaceLikelihoodBuffer likelyPlaces) {
                Log.i("help", "");
                for (PlaceLikelihood placeLikelihood : likelyPlaces) {
                    Log.i("Place", String.format("Place '%s' has likelihood: %g",
                            placeLikelihood.getPlace().getName(),
                            placeLikelihood.getLikelihood()));
                }
                likelyPlaces.release();
            }
        });


    }
};

这是我拥有的代码块。开头的前三个日志语句会运行,但是onResult中的日志语句不会,甚至不是Log.i(“help”,“”)。

,我知道它们在工作时的起始日志声明,因此它们不应成为问题。

4 个答案:

答案 0 :(得分:0)

如果应用没有ACCESS_FINE_LOCATION权限,您提供的代码示例会提前返回。也许这就是发生的事情。检查是否已授予权限(设置 - &gt; Apps-&gt; AppName-&gt;权限)。

答案 1 :(得分:0)

经过大量游戏(启用Places Android API,添加更多密钥,删除密钥,重命名密钥,重命名&#34; API_KEY&#34;在元数据下的&#34; name&#34;字段中),似乎应用程序终于突然给了我结果。老实说,我不知道我采取了哪种行动解决了这个问题,但现在它似乎正在发挥作用。

答案 2 :(得分:0)

人们很多时候会错过的是,错误很可能与设备的位置服务被关闭的事实有关。错误过于笼统,不允许开发人员知道发生了什么,而且往往会导致开发人员浪费时间,如果不是几天试图弄清楚最新情况。

在设备的设置下检查位置服务

答案 3 :(得分:0)

您应该检查您的连接。

 GoogleApiClient mGoogleApiClient = new GoogleApiClient
            .Builder(getContext())
            .addApi(Places.GEO_DATA_API)
            .addApi(Places.PLACE_DETECTION_API)
            .build();

    mGoogleApiClient.connect();