title: Google Places autocomplete Android - Not working
body: <p>I am new to Android App development. 
  I followed <a href="http://examples.javacodegeeks.com/android/android-google-places-autocomplete-api-example/" rel="nofollow">this toturial</a> to write a simple Google Places autocomplete Android App, but it does not return any suggestions when I start typing in the app; it gives NativeCrypto error in LogCat when I write anything in the autocomplete textview. Here is my code:</p>
  
  <pre><code>package com.example.newxyz; 
  
  import java.io.IOException;
  import java.io.InputStreamReader;
  import java.net.HttpURLConnection;
  import java.net.MalformedURLException;
  import java.net.URL;
  import java.net.URLEncoder;
  import java.util.ArrayList;
  import org.json.JSONArray;
  import org.json.JSONException;
  import org.json.JSONObject;
  import android.app.Activity;
  import android.content.Context;
  import android.os.Bundle;
  import android.util.Log;
  import android.view.View;
  import android.widget.AdapterView;
  import android.widget.AdapterView.OnItemClickListener;
  import android.widget.ArrayAdapter;
  import android.widget.AutoCompleteTextView;
  import android.widget.Filter;
  import android.widget.Filterable;
  import android.widget.Toast;
  
  public class GooglePlacesAutocompleteActivity extends Activity implements OnItemClickListener {
      private static final String LOG_TAG = "Google Places Autocomplete";
      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 = "AIzaSyAujQlZ1Jj64NAHMoynXjI253MVRzGW09w";
      private static final String True = "true";
      private static final String language = "en";
  
      AutoCompleteTextView autoCompView;
      @Override
  
     public void onCreate(Bundle savedInstanceState) {
  
        super.onCreate(savedInstanceState);
  
          setContentView(R.layout.activity_main);
  
          autoCompView = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView);
  
          autoCompView.setAdapter(new GooglePlacesAutocompleteAdapter(this, R.layout.list_item));
  
          autoCompView.setOnItemClickListener(this);
  
      } 
  
  
  
      public void onItemClick(AdapterView&lt;?&gt; adapterView, View view, int position, long id) {
  
          String str = (String) adapterView.getItemAtPosition(position);
          Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
     }
  
      public static ArrayList&lt;String&gt; autocomplete(String input) {
          ArrayList&lt;String&gt; resultList = null;
          HttpURLConnection conn = null;
          StringBuilder jsonResults = new StringBuilder();
         try {
              StringBuilder sb = new StringBuilder(PLACES_API_BASE + TYPE_AUTOCOMPLETE + OUT_JSON);
              sb.append("?sensor=" + True);
              sb.append("&amp;key=" + API_KEY);
              sb.append("&amp;language" + language);
              //sb.append("&amp;components=country:gr");
              sb.append("&amp;input=" + URLEncoder.encode(input, "utf8"));
              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) {
              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&lt;String&gt;(predsJsonArray.length());
              for (int i = 0; i &lt; predsJsonArray.length(); i++) {
                  System.out.println(predsJsonArray.getJSONObject(i).getString("description"));
                  System.out.println("============================================================");
                  resultList.add(predsJsonArray.getJSONObject(i).getString("description"));
              }
          } catch (JSONException e) {
              Log.e(LOG_TAG, "Cannot process JSON results", e);
       }
          return resultList;
      }
     class GooglePlacesAutocompleteAdapter extends ArrayAdapter&lt;String&gt; implements Filterable {
          private ArrayList&lt;String&gt; resultList;
          public GooglePlacesAutocompleteAdapter(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 &amp;&amp; results.count &gt; 0) {
                          notifyDataSetChanged();
                      } else {
                          notifyDataSetInvalidated();
                      }
                  }
  
              };
              return filter;
         }
      }
  }
  </code></pre>
  
  <p>Here is my LogCat error:</p>
  
  <pre><code>05-04 13:16:27.705: E/NativeCrypto(9312): ssl=0x611c0a20 cert_verify_callback x509_store_ctx=0x62625940 arg=0x0
  05-04 13:16:27.705: E/NativeCrypto(9312): ssl=0x611c0a20 cert_verify_callback calling verifyCertificateChain authMethod=ECDHE_RSA
  </code></pre>
  
  <ul>
  <li>I have enabled Google Places API for Android in console.developers.google.com</li>
  <li>I am using a Browser key for my app</li>
  <li>I have looked for answers to my problem and haven't found any relevant answer yet</li>
  <li>I have given Internet permissions in the Menifest file</li>
  <li>In Overview of the Developer Console, the Graph is showing the requests, which means requests are made but there is no response.</li>
  </ul>
  
  <p>Any help would be much appreciated.
  Thanks</p>