title: Google maps and Unable to resovle host maps.googleapis.com
body: <p>I have a problem with google maps. I try to add poliline from my current position and position from marker. This is code:</p>
  
  <pre><code>public class MapsFragment extends Fragment implements GoogleMap.OnMarkerClickListener, LocationListener {
  
      static final LatLng CEK = new LatLng(50.293734, 18.680679);
      static final LatLng SPIRALA = new LatLng(50.285402, 18.677715);
      static final LatLng SPIRALA2 = new LatLng(50.285283, 18.678014);
      static final LatLng ZIEMOWIT_PIAST = new LatLng(50.287742, 18.675693);
      static final LatLng NOWA_HALA = new LatLng(50.289633, 18.679960);
      static final LatLng STOLOWKA = new LatLng(50.288337, 18.674267);
      static final LatLng RYNEK = new LatLng(50.294028, 18.665659);
      static final LatLng LAKA_IGROWA = new LatLng(50.288844, 18.679562);
  
      private static GoogleMap map;
      private ArrayList&lt;Marker&gt; markerPoints;
      private ArrayList&lt;LatLng&gt; mMarkerPoints;
      private HashMap&lt;String, Event&gt; haspMap;
      private Event cekEvent, spiralaEvent, spirala2Event, ziemowitEvent, nowaHalaEvent, stolowkaEvent, rynekEvent, lakaEvent;
      private double mLatitude=0;
      private double mLongitude=0;
      private Location currentBestLocation = null;
      private LocationManager locationManager;
      private LatLng currentPos;
      private Location location;
      private Polyline polyline;
      private static View v;
  
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
      }
  
      @Override
      public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
          if (v != null) {
              ViewGroup parent = (ViewGroup) v.getParent();
              if (parent != null)
                  parent.removeView(v);
          }
          try {
              v = inflater.inflate(R.layout.fragment_map, container, false);
          } catch (InflateException e) {
              e.printStackTrace();
          }
          haspMap = new HashMap &lt;String, Event&gt;();
          mMarkerPoints = new ArrayList&lt;&gt;();
          locationManager = (LocationManager) getActivity().getSystemService(getActivity().LOCATION_SERVICE);
          setEventsData();
          try {
              initializeMap();
  
          } catch (Exception e) {
              e.printStackTrace();
          }
          return v;
      }
  
      @Override
      public void onViewCreated(View view, Bundle savedInstanceState) {
          super.onViewCreated(view, savedInstanceState);
  
          ButterKnife.inject(this, view);
          try {
              initializeMap();
  
          } catch (Exception e) {
              e.printStackTrace();
          }
          zoomMapOnMarkers();
  
      }
  
      private void initializeMap() {
          if (map == null) {
              map = ((SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map))
                      .getMap();
              map.setOnMarkerClickListener(this);
              setPointsList();
          }
      }
  
      private void setPointsList(){
          markerPoints = new ArrayList&lt;&gt;();
          markerPoints.add(map.addMarker(new MarkerOptions()
                  .position(CEK)));
          haspMap.put(markerPoints.get(markerPoints.size() - 1).getId(), cekEvent);
          markerPoints.add(map.addMarker(new MarkerOptions()
                  .position(SPIRALA)));
          haspMap.put(markerPoints.get(markerPoints.size() - 1).getId(), spiralaEvent);
          markerPoints.add(map.addMarker(new MarkerOptions()
                  .position(SPIRALA2)));
          haspMap.put(markerPoints.get(markerPoints.size() - 1).getId(), spirala2Event);
          markerPoints.add(map.addMarker(new MarkerOptions()
                  .position(ZIEMOWIT_PIAST)));
          haspMap.put(markerPoints.get(markerPoints.size() - 1).getId(), ziemowitEvent);
          markerPoints.add(map.addMarker(new MarkerOptions()
                  .position(NOWA_HALA)));
          haspMap.put(markerPoints.get(markerPoints.size() - 1).getId(), nowaHalaEvent);
          markerPoints.add(map.addMarker(new MarkerOptions()
                  .position(STOLOWKA)));
          haspMap.put(markerPoints.get(markerPoints.size() - 1).getId(), stolowkaEvent);
          markerPoints.add(map.addMarker(new MarkerOptions()
                  .position(RYNEK)));
          haspMap.put(markerPoints.get(markerPoints.size() - 1).getId(), rynekEvent);
          markerPoints.add(map.addMarker(new MarkerOptions()
                  .position(LAKA_IGROWA)));
          haspMap.put(markerPoints.get(markerPoints.size() - 1).getId(), lakaEvent);
      }
  
      private void setEventsData(){
          cekEvent = new Event();
          cekEvent.setTitle("Kabareton Igrowy w Centrum Edukacyjno - Kongresowe");
          cekEvent.setDate("Poniedziałek, 11 maja, 18:00");
          cekEvent.setPlace("CEK, ul. Konarskiego 18B");
          spiralaEvent = new Event();
          spiralaEvent.setTitle("Występ ATR Remont w CKS Mrowisko, a następnie Jam Session w KS Spirala");
          spiralaEvent.setDate("Poniedziałek, 11 maja, 19:00");
          spiralaEvent.setPlace("Spirala, ul. Pszczyńska 85");
          spirala2Event = new Event();
          spirala2Event.setTitle("Gra Miejska");
          spirala2Event.setDate("Wtorek, 12 maja, 17:00");
          spirala2Event.setPlace("Spirala, ul. Pszczyńska 85");
          ziemowitEvent = new Event();
          ziemowitEvent.setTitle("Pokaz filmowy między Piastem, a Ziemowitem");
          ziemowitEvent.setDate("Wtorek, 12 maja, 19:00");
          ziemowitEvent.setPlace("Między Ziemowitem a Piastem, ul. Łużycka 30-32");
          nowaHalaEvent = new Event();
          nowaHalaEvent.setTitle("Dzień Sportu");
          nowaHalaEvent.setDate("Środa, 13 maja, 8:30");
          nowaHalaEvent.setPlace("Nowa Hala, ul. Kaszubska 28");
          stolowkaEvent = new Event();
          stolowkaEvent.setTitle("Wieczór z grami planszowymi na Stołówce \"Na Łużyckiej\"");
          stolowkaEvent.setDate("Środa, 13 maja, 17:30");
          stolowkaEvent.setPlace("Stołówka na Łużyckiej, ul. Łużycka 24");
          rynekEvent = new Event();
          rynekEvent.setTitle("Przekazanie klucza na gliwickim rynku, a następnie korowód!");
          rynekEvent.setDate("Czwartek, 14 maja, 16:00");
          rynekEvent.setPlace("Rynek");
          lakaEvent = new Event();
          lakaEvent.setTitle("W czwartek wystąpią: Funk Da System, Koniec Świata, Farben Lehre, Acid Drinkers!\n" +
                  "A w piątek: Othalan, Prime, Małpa, Jamal, T.Love!\n");
          lakaEvent.setDate("Czwrartek i piątek, 14-15 maja");
          lakaEvent.setPlace("Łąka igrowa");
      }
  
      @Override
      public boolean onMarkerClick(final Marker marker) {
          for(Marker m : markerPoints){
              if (marker.getId().equals(m.getId())){
                  showDialogInfo(m);
              }
          }
          return false;
      }
  
      private void showDialogMore(Marker m){
          LayoutInflater inflater = getLayoutInflater(getArguments());
          View dialogLayout = inflater.inflate(R.layout.dialog_more_info, null);
          AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
  
          TextView title = (TextView) dialogLayout.findViewById(R.id.dialogMoreTitle);
          TextView text = (TextView) dialogLayout.findViewById(R.id.dialogMoreText);
  
          Iterator iterator = haspMap.keySet().iterator();
          while(iterator.hasNext()) {
              String key=(String)iterator.next();
              Event ev = (Event)haspMap.get(key);
              if(m.getId().equals(key)) {
                  if (ev.getTitle().equals(cekEvent.getTitle())) {
                      title.setText(getString(R.string.event_monday_title));
                      text.setText(getString(R.string.event_monday_text));
                  } else if (ev.getTitle().equals(spiralaEvent.getTitle())) {
                      title.setText(getString(R.string.event_monday_title));
                      text.setText(getString(R.string.event_monday_text));
                  } else if (ev.getTitle().equals(spirala2Event.getTitle())) {
                      title.setText(getString(R.string.event_tuesday_title));
                      text.setText(getString(R.string.event_tuesday_text));
                  } else if (ev.getTitle().equals(ziemowitEvent.getTitle())) {
                      title.setText(getString(R.string.event_tuesday_title));
                      text.setText(getString(R.string.event_tuesday_text));
                  } else if (ev.getTitle().equals(nowaHalaEvent.getTitle())) {
                      title.setText(getString(R.string.event_wednesday_title));
                      text.setText(getString(R.string.event_wednesday_text));
                  } else if (ev.getTitle().equals(stolowkaEvent.getTitle())) {
                      title.setText(getString(R.string.event_wednesday_title));
                      text.setText(getString(R.string.event_wednesday_text));
                  } else if (ev.getTitle().equals(rynekEvent.getTitle())) {
                      title.setText(getString(R.string.event_thursday_title));
                      text.setText(getString(R.string.event_thursday_text));
                  } else if (ev.getTitle().equals(lakaEvent.getTitle())) {
                      title.setText(getString(R.string.event_thursday_title) + "\n" + getString(R.string.event_friday_title));
                      text.setText(getString(R.string.event_thursday_text) + "\n" + getString(R.string.event_friday_text));
                  }
              }
          }
  
          builder.setView(dialogLayout);
          builder.show();
      }
  
  
      private void showDialogInfo(final Marker m){
          LayoutInflater inflater = getLayoutInflater(getArguments());
          final View dialogLayout = inflater.inflate(R.layout.dialog_marker, null);
          AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
          RelativeLayout layoutMore = (RelativeLayout) dialogLayout.findViewById(R.id.layoutMore);
          RelativeLayout layoutTrip = (RelativeLayout) dialogLayout.findViewById(R.id.layoutTrip);
          TextView textTitle = (TextView) dialogLayout.findViewById(R.id.textTitle);
          TextView textDate = (TextView) dialogLayout.findViewById(R.id.textDate);
          TextView textPlace = (TextView) dialogLayout.findViewById(R.id.textPlace);
  
          builder.setView(dialogLayout);
          final AlertDialog dialog = builder.create();
  
          Iterator iterator = haspMap.keySet().iterator();
          while(iterator.hasNext()) {
              String key=(String)iterator.next();
              Event ev = (Event)haspMap.get(key);
                  if(m.getId().equals(key)) {
                      textTitle.setText(ev.getTitle());
                      textDate.setText(ev.getDate());
                      textPlace.setText(ev.getPlace());
                  }
              }
  
          layoutMore.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View v) {
                  showDialogMore(m);
              }
          });
  
          layoutTrip.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View v) {
                  if (location != null) {
                      if(polyline != null)
                          polyline.remove();
                      mMarkerPoints.clear();
                      mMarkerPoints.add(currentPos);
                      mMarkerPoints.add(m.getPosition());
                      LatLng origin = mMarkerPoints.get(0);
                      LatLng dest = mMarkerPoints.get(1);
                      String url = getDirectionsUrl(origin, dest);
                      DownloadTask downloadTask = new DownloadTask();
                      downloadTask.execute(url);
                      dialog.dismiss();
                  } else {
                      drawRoute();
                      Toast.makeText(getActivity(), getString(R.string.toast_no_location), Toast.LENGTH_SHORT).show();
                  }
              }
          });
  
  
          dialog.show();
  
      }
  
      private void zoomMapOnMarkers(){
          LatLngBounds.Builder builder = new LatLngBounds.Builder();
          for (Marker marker : markerPoints) {
              builder.include(marker.getPosition());
          }
          final LatLngBounds bounds = builder.build();
          map.setOnMapLoadedCallback(new GoogleMap.OnMapLoadedCallback() {
              @Override
              public void onMapLoaded() {
                  map.animateCamera(CameraUpdateFactory.newLatLngBounds(bounds, 45));
                  map.setMapType(GoogleMap.MAP_TYPE_HYBRID);
              }
          });
          if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){
              drawRoute();
          }else{
              showGPSDisabledAlertToUser();
          }
  
      }
  
      private void showGPSDisabledAlertToUser(){
          AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getActivity());
          alertDialogBuilder.setMessage(getString(R.string.dialog_GPS))
                  .setCancelable(false)
                  .setPositiveButton("OK",
                          new DialogInterface.OnClickListener(){
                              public void onClick(DialogInterface dialog, int id){
                                  Intent callGPSSettingIntent = new Intent(
                                          android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
                                  startActivity(callGPSSettingIntent);
                              }
                          });
          alertDialogBuilder.setNegativeButton("Cancel",
                  new DialogInterface.OnClickListener(){
                      public void onClick(DialogInterface dialog, int id){
                          dialog.cancel();
                      }
                  });
          AlertDialog alert = alertDialogBuilder.create();
          alert.show();
      }
  
      private void drawRoute(){
          map.setMyLocationEnabled(true);
          Criteria criteria = new Criteria();
          String provider = locationManager.getBestProvider(criteria, true);
          location = locationManager.getLastKnownLocation(provider);
  
          if(location!=null){
              onLocationChanged(location);
          }
  
          locationManager.requestLocationUpdates(provider, 20000, 0, this);
  
      }
  
      @Override
      public void onResume() {
          super.onResume();
          initializeMap();
      }
  
      private void drawMarker(LatLng point){
          mMarkerPoints.add(point);
  
          MarkerOptions options = new MarkerOptions();
  
          options.position(point);
  
          if(mMarkerPoints.size()==1){
              options.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
          }else if(mMarkerPoints.size()==2){
              options.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED));
          }
  
          // Add new marker to the Google Map Android API V2
          map.addMarker(options);
      }
  
      @Override
      public void onLocationChanged(Location locatione) {
          currentBestLocation = locatione;
          Criteria criteria = new Criteria();
          String provider = locationManager.getBestProvider(criteria, true);
          location = locationManager.getLastKnownLocation(provider);
          currentPos = new LatLng(currentBestLocation.getLatitude(), currentBestLocation.getLongitude());
          mMarkerPoints.add(currentPos);
          if(mMarkerPoints.size() &lt; 2){
  
              mLatitude = locatione.getLatitude();
              mLongitude = locatione.getLongitude();
              LatLng point = new LatLng(mLatitude, mLongitude);
  
              map.moveCamera(CameraUpdateFactory.newLatLng(point));
              map.animateCamera(CameraUpdateFactory.zoomTo(12));
  
              drawMarker(point);
          }
      }
  
      @Override
      public void onStatusChanged(String provider, int status, Bundle extras) {
  
      }
  
      @Override
      public void onProviderEnabled(String provider) {
  
      }
  
      @Override
      public void onProviderDisabled(String provider) {
  
      }
  
      private String getDirectionsUrl(LatLng origin,LatLng dest){
  
          String str_origin = "origin="+origin.latitude+","+origin.longitude;
  
          String str_dest = "destination="+dest.latitude+","+dest.longitude;
  
          String sensor = "sensor=false";
  
          String parameters = str_origin+"&amp;"+str_dest+"&amp;"+sensor;
  
          String output = "json";
  
          String url = "https://maps.googleapis.com/maps/api/directions/"+output+"?"+parameters;
  
          return url;
      }
  
      private String downloadUrl(String strUrl) throws IOException {
          String data = "";
          InputStream iStream = null;
          HttpURLConnection urlConnection = null;
          try{
              URL url = new URL(strUrl);
  
              urlConnection = (HttpURLConnection) url.openConnection();
  
              //urlConnection.connect();
              urlConnection.setReadTimeout(10000 /* milliseconds */);
              urlConnection.setConnectTimeout(15000 /* milliseconds */);
              urlConnection.setRequestMethod("GET");
              urlConnection.setDoInput(true);
              // Starts the query
              urlConnection.connect();
  
  
              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();
  
              br.close();
  
          }catch(Exception e){
              e.printStackTrace();
          }finally{
              iStream.close();
              urlConnection.disconnect();
          }
          return data;
      }
  
      /** A class to download data from Google Directions URL */
      private class DownloadTask extends AsyncTask&lt;String, Void, String&gt; {
  
          // Downloading data in non-ui thread
          @Override
          protected String doInBackground(String... url) {
  
              // For storing data from web service
              String data = "";
  
              try{
                  // Fetching the data from web service
                  data = downloadUrl(url[0]);
              }catch(Exception e){
                  Log.d("Background Task",e.toString());
              }
              return data;
          }
  
          // Executes in UI thread, after the execution of
          // doInBackground()
          @Override
          protected void onPostExecute(String result) {
              super.onPostExecute(result);
  
              ParserTask parserTask = new ParserTask();
  
              // Invokes the thread for parsing the JSON data
              parserTask.execute(result);
          }
      }
  
      /** A class to parse the Google Directions in JSON format */
      private class ParserTask extends AsyncTask&lt;String, Integer, List&lt;List&lt;HashMap&lt;String,String&gt;&gt;&gt; &gt;{
  
          // Parsing the data in non-ui thread
          @Override
          protected List&lt;List&lt;HashMap&lt;String, String&gt;&gt;&gt; doInBackground(String... jsonData) {
  
              JSONObject jObject;
              List&lt;List&lt;HashMap&lt;String, String&gt;&gt;&gt; routes = null;
  
              try{
                  jObject = new JSONObject(jsonData[0]);
                  DirectionsJSONParser parser = new DirectionsJSONParser();
  
                  // Starts parsing data
                  routes = parser.parse(jObject);
              }catch(Exception e){
                  e.printStackTrace();
              }
              return routes;
          }
  
          // Executes in UI thread, after the parsing process
          @Override
          protected void onPostExecute(List&lt;List&lt;HashMap&lt;String, String&gt;&gt;&gt; result) {
              ArrayList&lt;LatLng&gt; points = null;
              PolylineOptions lineOptions = null;
  
              // Traversing through all the routes
              for(int i=0;i&lt;result.size();i++){
                  points = new ArrayList&lt;LatLng&gt;();
                  lineOptions = new PolylineOptions();
  
                  // Fetching i-th route
                  List&lt;HashMap&lt;String, String&gt;&gt; path = result.get(i);
  
                  // Fetching all the points in i-th route
                  for(int j=0;j&lt;path.size();j++){
                      HashMap&lt;String,String&gt; point = path.get(j);
  
                      double lat = Double.parseDouble(point.get("lat"));
                      double lng = Double.parseDouble(point.get("lng"));
                      LatLng position = new LatLng(lat, lng);
  
                      points.add(position);
                  }
  
                  // Adding all the points in the route to LineOptions
                  lineOptions.addAll(points);
                  lineOptions.width(6);
                  lineOptions.color(Color.RED);
              }
  
              // Drawing polyline in the Google Map for the i-th route
              //map.addPolyline(lineOptions);
              polyline = map.addPolyline(lineOptions);
          }
      }
  
      @Override
      public void onDestroyView() {
  
          super.onDestroyView();
          Fragment fragment = (getFragmentManager().findFragmentById(R.id.map));
          if (fragment != null){
              getActivity().getSupportFragmentManager().beginTransaction()
                      .remove(fragment)
                      .commit();
          }
      }
  }
  </code></pre>
  
  <p>I have current location and position from marker and when click to draw polyline I get Unable to resolve host "maps.googleapis.com": No address associated with hostname. 
  And application crash. When start again everything works fine and polyline add to map. Any idea why?</p>