Google Place API for Android to Find City

I have seen the tutorial to find the city using autocomplete text view in android.i have done everything that is instructed but now when I hit this url.

It always throws me an exception saying : java.net.UnknownHostException: Unable to resolve host "maps.googleapis.com": No address associated with hostname

but the same url work fine when i hit through browser and i am getting the results also.

Here is the code I’m hitting with :

public class PlacesAutoCompleteAdapter extends ArrayAdapter<
 String >
 implements Filterable{
 private ArrayList<
String>
 resultList;
 private static final String LOG_TAG = "ExampleApp";
 private static final String PLACES_API_BASE = "https://maps.googleapis.com/maps/api/place";
 private static final String TYPE_AUTOCOMPLETE = "/autocomplete";
 private static final String OUT_JSON = "/json";
 private static final String API_KEY = "I have generated the correct api key also";
 public PlacesAutoCompleteAdapter(Context context, int textViewResourceId) {
 super(context, textViewResourceId);
 }
 @Override public int getCount() {
 return resultList.size();
 }
 @Override public String getItem(int index) {
 return resultList.get(index);
 }
 @Override public Filter getFilter() {
 Filter filter = new Filter() {
 @Override protected FilterResults performFiltering(CharSequence constraint) {
 FilterResults filterResults = new FilterResults();
 if (constraint != null) {
 // Retrieve the autocomplete results. resultList = autocomplete(constraint.toString());
 // Assign the data to the FilterResults filterResults.values = resultList;
 filterResults.count = resultList.size();
 }
 return filterResults;
 }
 @Override protected void publishResults(CharSequence constraint, FilterResults results) {
 if (results != null &
&
 results.count >
 0) {
 notifyDataSetChanged();
 }
 else {
 notifyDataSetInvalidated();
 }
 }
 }
;
 return filter;
 }
 private ArrayList<
String>
 autocomplete(String input) {
 ArrayList<
String>
 resultList = null;
 HttpURLConnection conn = null;
 StringBuilder jsonResults = new StringBuilder();
 try {
 StringBuilder sb = new StringBuilder(PLACES_API_BASE + TYPE_AUTOCOMPLETE + OUT_JSON);
 sb.append("?sensor=false&
key=" + API_KEY);
 // sb.append("&
components=country:in");
 sb.append("&
input=" + URLEncoder.encode(input, "utf8"));
 // sb.append("&
input=" + input);
 System.out.println("URL ---------------: "+sb.toString());
 URL url = new URL(sb.toString());
 conn = (HttpURLConnection) url.openConnection();
 InputStreamReader in = new InputStreamReader(conn.getInputStream());
 // Load the results into a StringBuilder int read;
 char[] buff = new char[1024];
 while ((read = in.read(buff)) != -1) {
 jsonResults.append(buff, 0, read);
 }
 }
 catch (MalformedURLException e) {
 Log.e(LOG_TAG, "Error processing Places API URL", e);
 return resultList;
 }
 catch (IOException e) {
 e.printStackTrace();
 // Log.e(LOG_TAG, "Error connecting to Places API", e);
 return resultList;
 }
 finally {
 if (conn != null) {
 conn.disconnect();
 }
 }
 try {
 // Create a JSON object hierarchy from the results JSONObject jsonObj = new JSONObject(jsonResults.toString());
 JSONArray predsJsonArray = jsonObj.getJSONArray("predictions");
 // Extract the Place descriptions from the results resultList = new ArrayList<
String>
(predsJsonArray.length());
 for (int i = 0;
 i <
 predsJsonArray.length();
 i++) {
 resultList.add(predsJsonArray.getJSONObject(i).getString("description"));
 }
 }
 catch (JSONException e) {
 Log.e(LOG_TAG, "Cannot process JSON results", e);
 }
 return resultList;
 }
 }

 

oops! sorry guys. I have found the solution that was a silly mistake.I had not defined the INTERNET permission in the manifest.

 

Leave a Reply

Your email address will not be published. Required fields are marked *