11

Momentan baue ich eine Funktionalität, um nach einer Firma mit einer AutocompleteTextView zu suchen. Um dies zu erreichen Ich benutze eine PlaceAutocomplete IntentBuilder mit dem Overlay-Modus wie folgt aus:Wie erhalte ich die Öffnungszeiten eines Platzes mit Place Autocomplete Intent Builder in Android?

try { 
     AutocompleteFilter typeFilter = new AutocompleteFilter.Builder() 
       .setTypeFilter(AutocompleteFilter.TYPE_FILTER_ESTABLISHMENT) 
       .setCountry("NL") 
       .build(); 
     Intent intent = new PlaceAutocomplete.IntentBuilder(PlaceAutocomplete.MODE_OVERLAY) 
       .setFilter(typeFilter) 
       .build(activity); 
     activity.startActivityForResult(intent, placeAutocompleteRequestCode); 
    } catch (GooglePlayServicesRepairableException | GooglePlayServicesNotAvailableException e) { 
     Log.e(TAG, "Something went wrong getting the places fragment." + e.getMessage()); 
    } 

Ich erhalte den Ort wie folgt aus:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == PLACE_AUTOCOMPLETE_REQUEST_CODE) { 
     if (resultCode == RESULT_OK) { 
      Place place = PlaceAutocomplete.getPlace(this, data); 
      Log.i(TAG, "Place: " + place.getName()); 
     } else if (resultCode == PlaceAutocomplete.RESULT_ERROR) { 
      Status status = PlaceAutocomplete.getStatus(this, data); 
      Log.i(TAG, status.getStatusMessage()); 
     } else if (resultCode == RESULT_CANCELED) { 
      // The user canceled the operation. 
     } 
    } 
} 

Aber ich kann nicht die Öffnungszeiten im ‚Ort‘ finden Objekt. Wie kann ich sie abrufen? Ich kann nur andere finden, die die API verwenden, aber ich bevorzuge dieses Autocomplete-Fragment.

Auch versucht es mit einem API-Aufruf, um die Ort Details nach Ort ID später, aber es scheint, dass dies nur für Server-Schlüssel erlaubt ist. Wenn jemand dies mit einem Freigabeschlüssel auf Android funktioniert, dann wäre es ein nettes Hotfix für jetzt. Aber fühlt sich immer noch schwerfällig an.

+2

Haben Sie versucht [this] (https://stackoverflow.com/questions/36004222/get-opening-hours-of-place-android) oder [dies] (https://stackoverflow.com/questions/42676182/how-to-get-öffnungszeiten-using-the-google-plätze-api-for-android)? –

+0

Ja, ich habe das versucht, aber das funktioniert nicht. Da der API-Aufruf zum Abrufen von Ortsdetails einen API-Schlüssel mit IP-Filter erfordert, funktioniert dieser für Clients nicht und ist für Server gedacht. – jobbert

Antwort

0

Bitte verwenden Sie diesen Code unten:

private class ParserTask extends AsyncTask<String, Integer, HashMap<String,String>>{ 

     JSONObject jObject; 
     @Override 
     protected HashMap<String,String> doInBackground(String... jsonData) { 

      HashMap<String, String> hPlaceDetails = null; 
      PlaceDetailsJSONParser placeDetailsJsonParser = new PlaceDetailsJSONParser(); 

      try{ 
       // this object give JSON 
       jObject = new JSONObject(jsonData[0]); 

       // this object give Result 
       JSONObject jresult = new JSONObject(jObject[1]);    

       // this object give opening_hours 
       JSONObject jopening_hours = new JSONObject(jresult[2]); 

       // this object give periods 
       JSONObject jperiods = new JSONObject(jopening_hours[2]); 



      }catch(Exception e){ 
       Log.d("Exception",e.toString()); 
      } 
      return jperiods; 
     } 

     // Executed after the complete execution of doInBackground() method 
     @Override 
     protected void onPostExecute(JsonObject periods){ 
       HashMap<String,String> periods; 

       // put your condition 
       for(..) 
       { 
       JsonObject day = new JSONObject(periods[i]); 
        periods.put("key",day.get("day")); 

       } 
       } 
    } 
+0

Die Eingabe dieser asynctask ist eine JSON-Zeichenfolge, woher bekomme ich diese JSON-Zeichenfolge? Ich nehme an, dass Sie sich auf einen API-Aufruf beziehen. Aber Sie sind nicht berechtigt, Öffnungszeiten als Android-Client zu bekommen. Hast du das wirklich funktioniert? Oder ist dies nur ein Kopie einfügen dieser Antwort: https://stackoverflow.com/a/42731327/2917564. Was ich tatsächlich selbst bearbeitet habe, wie Sie sehen können: P. – jobbert

+0

Bitte beantworten Sie meinen Kommentar @chandrakant sharma – jobbert

0

probalbly Abfrage ist ungültig. Parameter müssen durch Et-Zeichen getrennt sein.

Ändern? Key = MYKEYHERE? Reference = zu? Key = MYKEYHERE & reference =. Ich habe es mit meinem Schlüssel getestet und eine Antwort für "Coffe Company" erhalten.

+0

Auch nicht die Antwort, die ich gesucht habe, aber definitiv in die Abfrage-Parameter schauen. – jobbert

Verwandte Themen