Google Places autocomplete-Android - funktioniert Nicht

Ich bin neu in Android-App-Entwicklung.
Ich folgte in diesem toturial zu schreiben eine einfache Google Places autocomplete Android-App, aber nicht wieder Anregungen, wenn ich mit der Eingabe beginnen in der app; es gibt NativeCrypto Fehler im LogCat, wenn ich alles schreiben, was in der AutoVervollständigen-textview. Hier ist mein 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<?> adapterView, View view, int position, long id) {

        String str = (String) adapterView.getItemAtPosition(position);
        Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
   }

    public static 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=" + True);
            sb.append("&key=" + API_KEY);
            sb.append("&language" + language);
            //sb.append("&components=country:gr");
            sb.append("&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<String>(predsJsonArray.length());
            for (int i = 0; i < 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<String> implements Filterable {
        private ArrayList<String> 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 && results.count > 0) {
                        notifyDataSetChanged();
                    } else {
                        notifyDataSetInvalidated();
                    }
                }

            };
            return filter;
       }
    }
}

Hier ist mein LogCat Fehler:

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
  • Ich aktiviert haben, Google Places API für Android console.developers.google.com
  • Ich bin mit einem Browser Schlüssel für meine app
  • Habe ich mich für die Antworten zu meinem problem und habe nicht gefunden eine relevante Antwort noch
  • Ich habe Ihnen die Internet-Berechtigungen in der Menifest Datei
  • In der Übersicht der Entwickler-Konsole, die Grafik zeigt die Anfragen, was bedeutet, dass Anfragen gemacht werden, aber es gibt keine Antwort.

Jede Hilfe wäre sehr geschätzt werden.
Dank

  • "es gibt NativeCrypto Fehler in LogCat"? Post dat logcat dann bitte (der logger tatsächlich bei der Fehlersuche)...
  • Bitte überprüfen Sie die post bearbeitet
  • Es könnte sein, lohnt sich ein Blick auf die neuen Orte, die API für Android (developers.google.com/places/android) die Unterstützung für Autocomplete.
  • Ich nochmals zu überprüfen und verfolgen jeden Schritt, wie in dem link, den Sie...der Fehler besteht weiterhin
  • Sie erwähnt, dass Sie ein Browser-Taste. Hast du auf einem Android-Schlüssel?
  • ja, habe ich...
  • Aisa karain versuchen, aktivieren Sie Google Place API-Webservice. Was ich sehe, der code, bist du mit dem Web-API und nicht die Android-API. Und, da Sie mit der web-API verwenden, sollten Sie das browser-Taste, nicht ein Android-Schlüssel. Lassen Sie mich wissen, wenn es funktioniert.
  • Ich konnte die Android-API, die gleichen Fehler, und keine Vorschläge, wie ich von einem autocomplete textview

Schreibe einen Kommentar