Android java.io.IOException: Dienst nicht verfügbar

Beschreibung: Ich verwende Google maps API V2 Ich habe Android Reverse Geocoding an berührten Ort implementiert.

Problem: Es wirft Ausnahmen auf

  try { addresses = geocoder.getFromLocation(latitude, longitude,1);} catch (IOException e) { e.printStackTrace(); if(AppConstants.DEBUG)Log.v(AppConstants.DEBUG_TAG," e.printStackTrace(): "+e.getMessage()); } 

Ich bekomme latitude und longitude richtig, aber ich kann nicht verstehen, warum es exception auslöst und ich habe auch Google-Suche gemacht, aber es konnte nicht helfen.

Kann jemand bitte im Detail erklären?

  • Wie man unregelmäßiges Polygon in gleiche Bereiche auf Google Map V2 aufteilt
  • Wie verhandle ich beiTouch Event für Karte in Google Map API v2?
  • Wie zu bestimmen, ob lat lange Koordinaten sind auf einer Straße mit Google Maps API v2
  • Wie man einzelne Marker mit Google Maps V2 entfernt?
  • ActionBarSherlock + Google Maps API v2 Duplizieren Sie die ID
  • Wie zeichnet man Text in Standard-Marker von Google Map v2
  • Animieren von Markierungen auf Google Maps V2
  • Fehlerpaket `com.google.android.gms ...` existiert nicht
  • 3 Solutions collect form web for “Android java.io.IOException: Dienst nicht verfügbar”

    Wie in dieser Android-Ausgabe 38009 – Geocoder werfen Ausnahme: IOException: Service nicht verfügbar Rebooten des Gerätes wird das Problem lösen

    Wenn Sie das Gerät nicht neu starten möchten, verwenden Sie dies

      public JSONObject getLocationFormGoogle(String placesName) { HttpGet httpGet = new HttpGet("http://maps.google.com/maps/api/geocode/json?address=" +placesName+"&ka&sensor=false"); HttpClient client = new DefaultHttpClient(); HttpResponse response; StringBuilder stringBuilder = new StringBuilder(); try { response = client.execute(httpGet); HttpEntity entity = response.getEntity(); InputStream stream = entity.getContent(); int b; while ((b = stream.read()) != -1) { stringBuilder.append((char) b); } } catch (ClientProtocolException e) { } catch (IOException e) { } JSONObject jsonObject = new JSONObject(); try { jsonObject = new JSONObject(stringBuilder.toString()); } catch (JSONException e) { e.printStackTrace(); } return jsonObject; } public LatLng getLatLng(JSONObject jsonObject) { Double lon = new Double(0); Double lat = new Double(0); try { lon = ((JSONArray)jsonObject.get("results")).getJSONObject(0) .getJSONObject("geometry").getJSONObject("location") .getDouble("lng"); lat = ((JSONArray)jsonObject.get("results")).getJSONObject(0) .getJSONObject("geometry").getJSONObject("location") .getDouble("lat"); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } return new LatLng(lat,lon); } LatLng Source =getLatLng(getLocationFormGoogle(placesName)); 

    Ich änderte @Ani-Lösung, um Stadtnamen von lat langen Parametern zu erhalten:

     public static String getLocationCityName( double lat, double lon ){ JSONObject result = getLocationFormGoogle(lat + "," + lon ); return getCityAddress(result); } protected static JSONObject getLocationFormGoogle(String placesName) { String apiRequest = "https://maps.googleapis.com/maps/api/geocode/json?latlng=" + placesName; //+ "&ka&sensor=false" HttpGet httpGet = new HttpGet(apiRequest); HttpClient client = new DefaultHttpClient(); HttpResponse response; StringBuilder stringBuilder = new StringBuilder(); try { response = client.execute(httpGet); HttpEntity entity = response.getEntity(); InputStream stream = entity.getContent(); int b; while ((b = stream.read()) != -1) { stringBuilder.append((char) b); } } catch (ClientProtocolException e) { } catch (IOException e) { } JSONObject jsonObject = new JSONObject(); try { jsonObject = new JSONObject(stringBuilder.toString()); } catch (JSONException e) { e.printStackTrace(); } return jsonObject; } protected static String getCityAddress( JSONObject result ){ if( result.has("results") ){ try { JSONArray array = result.getJSONArray("results"); if( array.length() > 0 ){ JSONObject place = array.getJSONObject(0); JSONArray components = place.getJSONArray("address_components"); for( int i = 0 ; i < components.length() ; i++ ){ JSONObject component = components.getJSONObject(i); JSONArray types = component.getJSONArray("types"); for( int j = 0 ; j < types.length() ; j ++ ){ if( types.getString(j).equals("locality") ){ return component.getString("long_name"); } } } } } catch (JSONException e) { e.printStackTrace(); } } return null; } 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.