Google place api for android find city

I saw a tutorial ( tutorial ) to find a city using autocomplete text view in android.i, did everything that was instructed, but now when I hit this URL

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

but the same url works fine when I am in the browser and I get the results as well.

Here is the code I'm clicking on:

 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 found a solution that was a stupid mistake. I did not define the INTERNET permission in the manifest.

+7
source share
2 answers

Please check if you have added INTERNET permission to the manifest.

 <uses-permission android:name="android.permission.INTERNET"></uses-permission> 
+6
source

This error occurred to me today. I figured this out by following these steps: 1: Make sure you add the INTERNET permission to the manifest.

2. Make sure that your laptop or device on which you are testing the application can access the Internet.

FYI, since for the key for the places API you should use " for browsers (with links) ", and not for Android applications.

Good luck.

0
source

All Articles