-
这个
sensor
参数不再是必需的。
-
此外,您没有在请求url中提供API_KEY。
-
这个
StringBuilder
的字符串应该用双引号括起来。
-
日志中的地址字符串是08080,应该是字符串。
-
您应该在后台线程中执行API请求。
示例API要求URL应如下所示:
https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=API_KEY
示例修改代码:
String API_KEY = "YOUR_API_KEY_STRING";
String input = "1600+Amphitheatre+Parkway,+Mountain+View,+CA";
private static boolean getAddressResult(String input, StringBuilder jsonResults) {
try {
URL requestUrl = new URL("https://maps.googleapis.com/maps/api/geocode/json?address=" + input " + &key=" + API_KEY;
);
HttpURLConnection connection = (HttpURLConnection)requestUrl.openConnection();
connection.setRequestMethod("GET");
connection.connect();
responseCode = connection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
BufferedReader reader = null;
InputStream inputStream = connection.getInputStream();
StringBuffer buffer = new StringBuffer();
if (inputStream == null) {
// Nothing to do.
return false;
}
reader = new BufferedReader(new InputStreamReader(inputStream));
String line;
while ((line = reader.readLine()) != null) {
long elapsedTime = System.currentTimeMillis();
if(elapsedTime-currentTime>=5000) {
return false;
}
buffer.append(line + "\n");
}
if (buffer.length() == 0) {
return false;
}
Log.d("Test", buffer.toString());
return buffer.toString();
}
else {
Log.i(TAG, "Unsuccessful HTTP Response Code: " + responseCode);
return false
}
} catch (MalformedURLException e) {
Log.e(LOG_TAG, "Error processing Places API URL", e);
return false;
} catch (IOException e) {
Log.e(LOG_TAG, "Error connecting to Places API", e);
return false;
} catch (Expcetion e) {
return false;
}
return false;
}
此示例代码应在后台方法中运行。
还需要确保在清单文件中添加internet权限。
<uses-permission android:name="android.permission.INTERNET" />
您还可以通过添加
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
并调用此方法以查看您的internet是否已连接:
private boolean isNetworkAvailable() {
ConnectivityManager manager = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = manager.getActiveNetworkInfo();
boolean isAvailable = false;
if (networkInfo != null && networkInfo.isConnected()) {
isAvailable = true;
}
return isAvailable;
}