我一直在尝试测试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”,“”)。
,我知道它们在工作时的起始日志声明,因此它们不应成为问题。答案 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();