java - Requesting JSON from Google Maps gives me REQUEST_DENIED -


i wondering why request keeps getting denied. i'm pretty sure api key correct, selected android in google console, gave sha1 project name , grabbed api key , stuck in project. however, still keeps giving me request_denied if try anything. i'm assuming it's how constructing url or if base url broken, or manner requesting data.

i'm new , started playing around few days ago, appreciated.

here code -

mainactivity

package io.github.invainn.quickeat;  import android.app.activity; import android.app.listactivity; import android.content.context; import android.content.intent; import android.location.location; import android.location.locationlistener; import android.location.locationmanager; import android.support.v7.app.actionbaractivity; import android.os.bundle; import android.util.log; import android.view.menu; import android.view.menuitem; import android.view.view; import android.widget.adapterview; import android.widget.arrayadapter; import android.widget.button; import android.widget.spinner; import android.widget.textview; import android.widget.toast;  import com.google.android.gms.common.connectionresult; import com.google.android.gms.common.api.googleapiclient; import com.google.android.gms.common.api.pendingresult; import com.google.android.gms.common.api.resultcallback; import com.google.android.gms.location.places.placelikelihood; import com.google.android.gms.location.places.placelikelihoodbuffer; import com.google.android.gms.location.places.places; import com.google.android.gms.maps.model.latlng;   public class mainactivity extends actionbaractivity implements adapterview.onitemselectedlistener, googleapiclient.onconnectionfailedlistener {      spinner spinner;     googleapiclient mgoogleapiclient;      private charsequence mostlikelyplace;     private latlng mostlikelyplacelatlng;      private static final string log_tag = "mainactivity";     private static final int google_api_client_id = 0;      @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_main);          mgoogleapiclient = new googleapiclient.builder(mainactivity.this)                 .addapi(places.place_detection_api)                 .enableautomanage(this, google_api_client_id, this)                 .build();          spinner = (spinner) findviewbyid(r.id.spinner);          arrayadapter adapter = arrayadapter.createfromresource(this, r.array.choices, android.r.layout.simple_spinner_item);         spinner.setadapter(adapter);          setupsearchbutton();          pendingresult<placelikelihoodbuffer> result = places.placedetectionapi.getcurrentplace(mgoogleapiclient, null);         result.setresultcallback(new resultcallback<placelikelihoodbuffer>() {             @override             public void onresult(placelikelihoodbuffer likelyplaces) {                 (placelikelihood placelikelihood : likelyplaces) {                     log.i(log_tag, string.format("place '%s' " +                                     "likelihood: %g",                             placelikelihood.getplace().getname(),                             placelikelihood.getlikelihood()));                             if(placelikelihood.getlikelihood() >= .20) {                                 mostlikelyplace = placelikelihood.getplace().getname();                                 mostlikelyplacelatlng = placelikelihood.getplace().getlatlng();                             }                 }                 toast.maketext(mainactivity.this, "your current location: " + mostlikelyplace, toast.length_long).show();                 likelyplaces.release();             }         });     }      private void setupsearchbutton() {         button searchkeyword = (button)findviewbyid(r.id.searchkeyword);          searchkeyword.setonclicklistener(new view.onclicklistener() {             @override             public void onclick(view v) {                 toast.maketext(mainactivity.this, "switched listactivity", toast.length_short).show();                  bundle args = new bundle();                 args.putparcelable("currentlocation", mostlikelyplacelatlng);                  intent intent = new intent(mainactivity.this, list_activity.class);                 intent.putextra("bundle", args);                 startactivity(intent);             }         });     }      @override     public void onitemselected(adapterview<?> parent, view view, int position, long id) {      }      @override     public void onnothingselected(adapterview<?> parent) {      }      @override     public void onconnectionfailed(connectionresult connectionresult) {      } } 

list_activity

package io.github.invainn.quickeat;  import android.app.activity; import android.content.intent; import android.os.asynctask; import android.support.v7.app.actionbaractivity; import android.os.bundle; import android.text.html; import android.view.menu; import android.view.menuitem; import android.view.view; import android.widget.button; import android.widget.textview;  import com.google.android.gms.common.googleplayservicesnotavailableexception; import com.google.android.gms.common.googleplayservicesrepairableexception; import com.google.android.gms.location.places.place; import com.google.android.gms.location.places.ui.placepicker; import com.google.android.gms.maps.model.latlng; import com.google.android.gms.maps.model.latlngbounds;  import org.apache.http.httprequestfactory;  import java.net.url;   public class list_activity extends actionbaractivity {     private static final int place_picker_request = 1;     private static final string apiaddress = "";      @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_list_);          // receive bundle , currentlocation         bundle bundle = getintent().getparcelableextra("bundle");         latlng currentlocation = bundle.getparcelable("currentlocation");          new queryrequest().execute(currentlocation);      }      @override     public boolean oncreateoptionsmenu(menu menu) {         // inflate menu; adds items action bar if present.         getmenuinflater().inflate(r.menu.menu_info, menu);         return true;     }      @override     public boolean onoptionsitemselected(menuitem item) {         // handle action bar item clicks here. action bar         // automatically handle clicks on home/up button, long         // specify parent activity in androidmanifest.xml.         int id = item.getitemid();          //noinspection simplifiableifstatement         if (id == r.id.action_settings) {             return true;         }          return super.onoptionsitemselected(item);     } } 

queryrequest

package io.github.invainn.quickeat;  import android.os.asynctask; import android.util.log;  import com.google.android.gms.location.places.place; import com.google.android.gms.maps.googlemap; import com.google.android.gms.maps.model.latlng;  import org.apache.http.httprequest; import org.apache.http.httprequestfactory;  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;  /**  * created anthony on 4/28/2015.  */ public class queryrequest extends asynctask<latlng, integer, string>  {      private static final string log_tag = "queryrequest";     private static final string apibaseurl = "https://maps.googleapis.com/maps/api/place";      private static final string search = "/textsearch";     private static final string jsonout = "/json";      private static final string apikey = "myapikey";      public static arraylist<place> search(string keyword, double lat, double lng) {         arraylist<place> resultlist = null;          httpurlconnection conn = null;         stringbuilder jsonresults = new stringbuilder();          try {             stringbuilder sb = new stringbuilder(apibaseurl);             sb.append(search);             sb.append(jsonout);            // sb.append("?sensor=false");             sb.append("?key=" + apikey);             sb.append("&keyword=" + urlencoder.encode(keyword, "utf8"));             sb.append("&location=" + string.valueof(lat) + "," + string.valueof(lng));             sb.append("&radius=500");              //system.out.println(sb.tostring());              url url = new url(sb.tostring());             conn = (httpurlconnection) url.openconnection();             inputstreamreader in = new inputstreamreader(conn.getinputstream());              // need test im pretty sure works             int read;             char[] buff = new char[1024];             while ((read = in.read(buff)) != -1) {                 jsonresults.append(buff, 0, read);             }              system.out.println(jsonresults);          } catch (malformedurlexception e) {             log.e(log_tag, "error processing places api url", e);             return null;         } catch (ioexception e) {             log.e(log_tag, "error connecting places api", e);             return null;         } {             if (conn != null) {                 conn.disconnect();             }         }         return null;     }      @override     protected string doinbackground(latlng... params) {         latlng loc = params[0];         search("chinese", loc.latitude, loc.longitude );         return null;     } } 

if else wrong code, please do, i'd know.

follow steps below:

google console:

apis & auth -> apis (google places api web service) enable.

apis & auth -> credentials -> create new key -> browser key (you need create browser key , not android key.).

for browser key, not need create specific key using sha1.


Comments

Popular posts from this blog

java - Spring Data JPA: Why findOne(id) executing delete query internally? -

python - Mongodb How to add addtional information when aggregating? -

java - Incorrect order of records in M-M relationship in hibernate -