如何在Android中执行Google API网址

时间:2016-03-17 13:12:50

标签: android

我想访问googlePlaces API并且我有网址,但我不知道如何执行API并获得json结果任何人都可以帮我解决这些问题?为我提供一个简单的方法,我可以执行API

这是我的代码:

package com.astro.famouspandit.Activities.Activity;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

import com.astro.famouspandit.R;
import com.google.android.gms.common.GooglePlayServicesNotAvailableException;
import com.google.android.gms.common.GooglePlayServicesRepairableException;
import com.google.android.gms.common.api.Status;
import com.google.android.gms.location.places.Place;

import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class Location extends AppCompatActivity  {

    private EditText mEdttxtCity;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_location);
        final String API_KEY = "AgAjkAkAk-hsdwdweohdohwedhooooo";
        mEdttxtCity = (EditText)findViewById(R.id.edttxtCity);
        mEdttxtCity.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
               String Edttxtcity =  mEdttxtCity.getText().toString();
                if (Edttxtcity.length() >3) {

                    String url = " https://maps.googleapis.com/maps/api/place/autocomplete/json?input=ban&key=" + API_KEY;
                    Log.d("data", "onTextChanged: " + url);



                }
            }

            @Override
            public void afterTextChanged(Editable s) {

            }


        });



    }



}

3 个答案:

答案 0 :(得分:1)

onTextChange中的代码 -

  input = s.toString();
  SearchPlacesTask   searchplacesTask = new SearchPlacesTask();
  searchplacesTask.execute();

搜索地点的代码

    private class SearchPlacesTask extends AsyncTask<String, Void, String> {


            @Override
            protected void onPreExecute() {
                super.onPreExecute();
                System.out.println("SearchPlacesTask Called");

            }


            @Override
            protected String doInBackground(String... place) {
                // For storing data from web service
                String data = "";

                // Obtain browser key from https://code.google.com/apis/console

                String key = "key=YOUR_API_KEY";


                try {
                    input = "input=" + URLEncoder.encode(input, "utf-8");
                    System.out.println("input String : " + input);
                } catch (Exception e1) {
                    e1.printStackTrace();
                }

                // place type to be searched
                String types = "types=geocode";

                // Sensor enabled
                String sensor = "language=en";

                /*// Building the parameters to the web service
                String parameters = input + "&" + types + "&" + sensor + "&" + key;*/


                // Building the parameters to the web service

                String parameters = input + "&" + sensor + "&" + key;


                // Output format
                String output = "json";

                // Building the url to the web service

                String url = "https://maps.googleapis.com/maps/api/place/autocomplete/"
                        + output + "?" + parameters;

                System.out.println("Final URL Google API : " + url);
    //            String url = "https://maps.googleapis.com/maps/api/place/autocomplete/location=13.758662,100.496443" + output + "?" + parameters;

                try {
                    // Fetching the data from we service
                    data = downloadUrlsearch(url);
                } catch (Exception e) {
                    Log.d("Background Task", e.toString());

                }

                return data;
            }

            @Override
            protected void onPostExecute(String result) {
                super.onPostExecute(result);

//YOUR JSON DATA HERE.
//NOW YOU CAN PARSE.


            }
        }

从网址下载数据的代码 -

 /** AUTO SEARCH CODE  */
    /**
     * A method to download json data from url
     */
    private String downloadUrlsearch(String strUrl) throws IOException {
        String data = "";
        InputStream iStream = null;
        HttpURLConnection urlConnection = null;
        try {

            URL url = new URL(strUrl);

            // Creating an http connection to communicate with url
            urlConnection = (HttpURLConnection) url.openConnection();

            // Connecting to url
            urlConnection.connect();

            // Reading data from url
            iStream = urlConnection.getInputStream();


            BufferedReader br = new BufferedReader(new InputStreamReader(iStream));

            StringBuffer sb = new StringBuffer();

            String line = "";
            while ((line = br.readLine()) != null) {
                sb.append(line);
            }

            data = sb.toString();

            System.out.println("data: " + data);

            br.close();


        } catch (Exception e) {

            e.printStackTrace();
//            Log.d("Exception while downloading url", e.toString());
        } finally {

            iStream.close();
            urlConnection.disconnect();
        }
        return data;
    }

答案 1 :(得分:0)

排球是最好的;试试这个:

 StringRequest stringRequest = new StringRequest(Request.Method.POST, URL_TO_QUERY,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    Toast.makeText(MainActivity.this,response,Toast.LENGTH_LONG).show();
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Toast.makeText(MainActivity.this,error.toString(),Toast.LENGTH_LONG).show();
                }
            });
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);

答案 2 :(得分:0)

Android Samples Using Google Places API

请参阅使用Google Places API的示例代码。推荐使用API​​的方法。