title: how to restrict google places autocomplete to specific country?
body: <p>I want to restrict my goolge places auto complete api to the specific country only now iam getting the entire world suggestion places ... Please solve the problem thanks in advance</p>
  
  <h1>Place Adapter class:-</h1>
  
  <pre><code>package com.example.keita.googleplaces;
  
  import android.content.Context;
  import android.util.Log;
  import android.widget.ArrayAdapter;
  import android.widget.Filter;
  import android.widget.Filterable;
  import android.widget.Toast;
  
  import com.google.android.gms.common.api.GoogleApiClient;
  import com.google.android.gms.common.api.PendingResult;
  import com.google.android.gms.common.api.Status;
  import com.google.android.gms.location.places.AutocompleteFilter;
  import com.google.android.gms.location.places.AutocompletePrediction;
  import com.google.android.gms.location.places.AutocompletePredictionBuffer;
  import com.google.android.gms.location.places.Places;
  import com.google.android.gms.maps.model.LatLngBounds;
  
  import java.util.ArrayList;
  import java.util.Iterator;
  import java.util.concurrent.TimeUnit;
  
  public class PlaceArrayAdapter
          extends ArrayAdapter&lt;PlaceArrayAdapter.PlaceAutocomplete&gt; implements Filterable {
      private static final String TAG = "PlaceArrayAdapter";
      private GoogleApiClient mGoogleApiClient;
      private AutocompleteFilter mPlaceFilter;
      private LatLngBounds mBounds;
      private ArrayList&lt;PlaceAutocomplete&gt; mResultList;
  
      /**
       * Constructor
       *
       * @param context  Context
       * @param resource Layout resource
       * @param bounds   Used to specify the search bounds
       * @param filter   Used to specify place types
       */
      public PlaceArrayAdapter(Context context, int resource, LatLngBounds bounds,
                               AutocompleteFilter filter) {
  
  
          super(context, resource);
          mBounds = bounds;
          mPlaceFilter = filter;
      }
  
      public void setGoogleApiClient(GoogleApiClient googleApiClient) {
          if (googleApiClient == null || !googleApiClient.isConnected()) {
              mGoogleApiClient = null;
          } else {
              mGoogleApiClient = googleApiClient;
          }
      }
  
      @Override
      public int getCount() {
          return mResultList.size();
      }
  
      @Override
      public PlaceAutocomplete getItem(int position) {
          return mResultList.get(position);
      }
  
      private ArrayList&lt;PlaceAutocomplete&gt; getPredictions(CharSequence constraint) {
          if (mGoogleApiClient != null) {
              Log.i(TAG, "Executing autocomplete query for: " + constraint);
              PendingResult&lt;AutocompletePredictionBuffer&gt; results =
                      Places.GeoDataApi
                              .getAutocompletePredictions(mGoogleApiClient, constraint.toString(),
                                      mBounds, mPlaceFilter);
              // Wait for predictions, set the timeout.
              AutocompletePredictionBuffer autocompletePredictions = results
                      .await(60, TimeUnit.SECONDS);
              final Status status = autocompletePredictions.getStatus();
              if (!status.isSuccess()) {
                  Toast.makeText(getContext(), "Error: " + status.toString(),
                          Toast.LENGTH_SHORT).show();
                  Log.e(TAG, "Error getting place predictions: " + status
                          .toString());
                  autocompletePredictions.release();
                  return null;
              }
  
              Log.i(TAG, "Query completed. Received " + autocompletePredictions.getCount()
                      + " predictions.");
              Iterator&lt;AutocompletePrediction&gt; iterator = autocompletePredictions.iterator();
              ArrayList resultList = new ArrayList&lt;&gt;(autocompletePredictions.getCount());
              while (iterator.hasNext()) {
                  AutocompletePrediction prediction = iterator.next();
                  resultList.add(new PlaceAutocomplete(prediction.getPlaceId(),
                          prediction.getDescription()));
              }
              // Buffer release
              autocompletePredictions.release();
              return resultList;
          }
          Log.e(TAG, "Google API client is not connected.");
          return null;
      }
  
      @Override
      public Filter getFilter() {
          Filter filter = new Filter() {
              @Override
              protected FilterResults performFiltering(CharSequence constraint) {
                  FilterResults results = new FilterResults();
                  if (constraint != null) {
                      // Query the autocomplete API for the entered constraint
                      mResultList = getPredictions(constraint);
                      if (mResultList != null) {
                          // Results
                          results.values = mResultList;
                          results.count = mResultList.size();
                      }
                  }
                  return results;
              }
  
              @Override
              protected void publishResults(CharSequence constraint, FilterResults results) {
                  if (results != null &amp;&amp; results.count &gt; 0) {
                      // The API returned at least one result, update the data.
                      notifyDataSetChanged();
                  } else {
                      // The API did not return any results, invalidate the data set.
                      notifyDataSetInvalidated();
                  }
              }
          };
          return filter;
      }
  
      class PlaceAutocomplete {
  
          public CharSequence placeId;
          public CharSequence description;
  
          PlaceAutocomplete(CharSequence placeId, CharSequence description) {
              this.placeId = placeId;
              this.description = description;
          }
  
          @Override
          public String toString() {
              return description.toString();
          }
      }
  }
  </code></pre>
  
  <h1>MainActivity class:-</h1>
  
  <pre><code>package com.example.keita.googleplaces;
  
  import android.os.Bundle;
  import android.support.design.widget.FloatingActionButton;
  import android.support.design.widget.Snackbar;
  import android.support.v7.app.AppCompatActivity;
  import android.support.v7.widget.Toolbar;
  import android.view.View;
  import android.view.Menu;
  import android.view.MenuItem;
  import android.os.Bundle;
  import android.support.v7.app.AppCompatActivity;
  import android.text.Html;
  import android.util.Log;
  import android.view.View;
  import android.widget.AdapterView;
  import android.widget.AutoCompleteTextView;
  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.Place;
  import com.google.android.gms.location.places.PlaceBuffer;
  import com.google.android.gms.location.places.Places;
  import com.google.android.gms.maps.model.LatLng;
  import com.google.android.gms.maps.model.LatLngBounds;
  
  public class MainActivity extends AppCompatActivity implements
          GoogleApiClient.OnConnectionFailedListener,
          GoogleApiClient.ConnectionCallbacks{
      private static final String LOG_TAG = "MainActivity";
      private static final int GOOGLE_API_CLIENT_ID = 0;
      private AutoCompleteTextView mAutocompleteTextView;
      private TextView mNameTextView;
      private TextView mAddressTextView;
      private TextView mIdTextView;
      private TextView mPhoneTextView;
      private TextView mWebTextView;
      private TextView mAttTextView;
      private GoogleApiClient mGoogleApiClient;
      private PlaceArrayAdapter mPlaceArrayAdapter;
      private static final LatLngBounds LAT_LNG_BOUNDS = new LatLngBounds(
              new LatLng(32.6393,-117.004304), new LatLng(44.901184 ,-67.32254));
  
  
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
          Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
          setSupportActionBar(toolbar);
  
          FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
          fab.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View view) {
                  Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                          .setAction("Action", null).show();
              }
          });
  
          mGoogleApiClient = new GoogleApiClient.Builder(MainActivity.this)
                  .addApi(Places.GEO_DATA_API)
                  .enableAutoManage(this, GOOGLE_API_CLIENT_ID, this)
                  .addConnectionCallbacks(this)
                  .build();
          mAutocompleteTextView = (AutoCompleteTextView) findViewById(R.id
                  .autoCompleteTextView);
          mAutocompleteTextView.setThreshold(3);
          mNameTextView = (TextView) findViewById(R.id.name);
          mAddressTextView = (TextView) findViewById(R.id.address);
          mIdTextView = (TextView) findViewById(R.id.place_id);
          mPhoneTextView = (TextView) findViewById(R.id.phone);
          mWebTextView = (TextView) findViewById(R.id.web);
          mAttTextView = (TextView) findViewById(R.id.att);
          mAutocompleteTextView.setOnItemClickListener(mAutocompleteClickListener);
          mPlaceArrayAdapter = new PlaceArrayAdapter(this, android.R.layout.simple_list_item_1,
                  LAT_LNG_BOUNDS, null);
          mAutocompleteTextView.setAdapter(mPlaceArrayAdapter);
      }
      private AdapterView.OnItemClickListener mAutocompleteClickListener
              = new AdapterView.OnItemClickListener() {
          @Override
          public void onItemClick(AdapterView&lt;?&gt; parent, View view, int position, long id) {
              final PlaceArrayAdapter.PlaceAutocomplete item = mPlaceArrayAdapter.getItem(position);
              final String placeId = String.valueOf(item.placeId);
              Log.i(LOG_TAG, "Selected: " + item.description);
              PendingResult&lt;PlaceBuffer&gt; placeResult = Places.GeoDataApi
                      .getPlaceById(mGoogleApiClient, placeId);
              placeResult.setResultCallback(mUpdatePlaceDetailsCallback);
              Log.i(LOG_TAG, "Fetching details for ID: " + item.placeId);
          }
      };
  
      private ResultCallback&lt;PlaceBuffer&gt; mUpdatePlaceDetailsCallback
              = new ResultCallback&lt;PlaceBuffer&gt;() {
          @Override
          public void onResult(PlaceBuffer places) {
              if (!places.getStatus().isSuccess()) {
                  Log.e(LOG_TAG, "Place query did not complete. Error: " +
                          places.getStatus().toString());
                  return;
              }
              // Selecting the first object buffer.
              final Place place = places.get(0);
              CharSequence attributions = places.getAttributions();
  
              mNameTextView.setText(Html.fromHtml(place.getName() + ""));
              mAddressTextView.setText(Html.fromHtml(place.getAddress() + ""));
              mIdTextView.setText(Html.fromHtml(place.getId() + ""));
              mPhoneTextView.setText(Html.fromHtml(place.getPhoneNumber() + ""));
              mWebTextView.setText(place.getWebsiteUri() + "");
              if (attributions != null) {
                  mAttTextView.setText(Html.fromHtml(attributions.toString()));
              }
          }
      };
  
      @Override
      public void onConnected(Bundle bundle) {
          mPlaceArrayAdapter.setGoogleApiClient(mGoogleApiClient);
          Log.i(LOG_TAG, "Google Places API connected.");
  
      }
  
      @Override
      public void onConnectionFailed(ConnectionResult connectionResult) {
          Log.e(LOG_TAG, "Google Places API connection failed with error code: "
                  + connectionResult.getErrorCode());
  
          Toast.makeText(this,
                  "Google Places API connection failed with error code:" +
                          connectionResult.getErrorCode(),
                  Toast.LENGTH_LONG).show();
      }
  
      @Override
      public void onConnectionSuspended(int i) {
          mPlaceArrayAdapter.setGoogleApiClient(null);
          Log.e(LOG_TAG, "Google Places API connection suspended.");
      }
      @Override
      public boolean onCreateOptionsMenu(Menu menu) {
          // Inflate the menu; this adds items to the action bar if it is present.
          getMenuInflater().inflate(R.menu.menu_main, menu);
          return true;
      }
  
      @Override
      public boolean onOptionsItemSelected(MenuItem item) {
          // Handle action bar item clicks here. The action bar will
          // automatically handle clicks on the Home/Up button, so long
          // as you specify a parent activity in AndroidManifest.xml.
          int id = item.getItemId();
  
          //noinspection SimplifiableIfStatement
          if (id == R.id.action_settings) {
              return true;
          }
  
          return super.onOptionsItemSelected(item);
      }
  }
  </code></pre>
  
  <h1>content_main.xml:-</h1>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto"
      xmlns:tools="http://schemas.android.com/tools"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:orientation="vertical"
      android:paddingBottom="@dimen/activity_vertical_margin"
      android:paddingLeft="@dimen/activity_horizontal_margin"
      android:paddingRight="@dimen/activity_horizontal_margin"
      android:paddingTop="@dimen/activity_vertical_margin"
      app:layout_behavior="@string/appbar_scrolling_view_behavior"
      tools:context="com.example.keita.googleplaces.MainActivity"
      tools:showIn="@layout/activity_main"&gt;
  
      &lt;AutoCompleteTextView
          android:id="@+id/autoCompleteTextView"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:layout_centerHorizontal="true"
          android:layout_marginTop="50dp"
          android:hint="Enter Place Here"/&gt;
  
      &lt;TextView
          android:id="@+id/header"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignParentLeft="true"
          android:layout_alignParentStart="true"
          android:layout_below="@+id/autoCompleteTextView"
          android:layout_marginTop="20dp"
          android:text="Selected Place:"
          android:textStyle="bold"/&gt;
  
      &lt;TextView
          android:id="@+id/name"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignParentLeft="true"
          android:layout_alignParentStart="true"
          android:layout_below="@+id/header"
          android:layout_marginTop="20dp"/&gt;
  
      &lt;TextView
          android:id="@+id/address"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignParentLeft="true"
          android:layout_alignParentStart="true"
          android:layout_below="@+id/name"/&gt;
  
      &lt;TextView
          android:id="@+id/place_id"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignParentLeft="true"
          android:layout_alignParentStart="true"
          android:layout_below="@+id/address"/&gt;
  
      &lt;TextView
          android:id="@+id/phone"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignParentLeft="true"
          android:layout_alignParentStart="true"
          android:layout_below="@+id/place_id"
          android:autoLink="phone"/&gt;
  
      &lt;TextView
          android:id="@+id/web"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignParentLeft="true"
          android:layout_alignParentStart="true"
          android:layout_below="@+id/phone"
          android:autoLink="web"/&gt;
  
      &lt;TextView
          android:id="@+id/att"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignParentBottom="true"
          android:layout_alignParentEnd="true"
          android:layout_alignParentRight="true"
          android:autoLink="web"/&gt;
  
      ImageView
          android:id="@+id/poweredBy"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_above="@+id/att"
          android:layout_alignParentEnd="true"
          android:layout_alignParentRight="true"
          android:src="@drawable/powered_by_google_light"/&gt;
  
      ImageView
          android:id="@+id/truiton_image"
          android:layout_width="100dp"
          android:layout_height="100dp"
          android:layout_above="@+id/poweredBy"
          android:layout_alignParentEnd="true"
          android:layout_alignParentRight="true"
          android:layout_marginBottom="-20dp"
          android:src="@mipmap/ic_launcher"/&gt;
  
  
  &lt;/LinearLayout&gt;
  </code></pre>