11

現在、私はAutocompleteTextViewを持つ会社を検索する機能を構築しています。Androidにプレースオートコンプリートインテントビルダーを使用してプレイスの営業時間を取得するにはどうすればよいですか?

@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. 
     } 
    } 
} 

しかし、私は「場所」は営業時間を見つけることができません。私はこのような場所を受け取る

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()); 
    } 

:私はこのようなオーバーレイモードでPlaceAutocomplete IntentBuilderを使用し、これを達成するために、オブジェクト。どのように私はそれらを取得することができますか?私はAPIを使用する他の人しか見つけることができませんが、私はこのオートコンプリート・フラグメントを好みます。

APIコールで試してみて、後で場所IDで場所の詳細を取得しようとしましたが、これはサーバーキーにのみ許可されているようです。誰かがAndroid上でリリースキーを使って作業している場合は、今は素晴らしい修正プログラムになります。しかし、まだ扱いにくいです。

+2

[this](https://stackoverflow.com/questions/36004222/get-opening-hours-of-place-android)または[this](https://stackoverflow.com/questions/42676182)を試しましたか? /使用方法 - 開設時間 - Google-places-api-for-androidを使用して) –

+0

はい、私はそれを試みましたが、それは動作しません。場所の詳細を取得するためのAPI呼び出しには、IPフィルタ付きのAPIキーが必要です。これはクライアントでは機能せず、サーバー向けです。 – jobbert

答えて

0

以下、このコードを使用してください:

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

このasynctaskの入力はjson文字列です。json文字列はどこから取得できますか?私はあなたがAPIコールを参照していると仮定します。しかし、あなたはAndroidクライアントとしての営業時間を取得する権限がありません。あなたは実際にこれを稼働させましたか?または、これはこの回答のコピー貼りです:https://stackoverflow.com/a/42731327/2917564。あなたが見ているように、私は自分自身を実際に編集しました:P。 – jobbert

+0

私のコメントに答えてください@chandrakant sharma – jobbert

0

probalblyクエリが無効です。パラメータはアンパサンドで区切る必要があります。

変更?key = MYKEYHERE?reference = to?key = MYKEYHERE &リファレンス=。私は自分の鍵でそれをテストし、 "Coffe company"の応答を受けました。

+0

また、私が探していた答えではありませんが、間違いなくクエリのパラメータを調べます。 – jobbert

関連する問題