5

की आलोचना करें कई बार मैं अपने आवेदन में Service Not Available अपवादों को पूरा करता हूं। ज्यादातर समय, कोई समस्या नहीं है। लेकिन कभी-कभी ऐसा होता है। (ऐप अभी भी विकास में है)रिवर्स जियोकोडिंग - सेवा उपलब्ध नहीं है - डिवाइस को पुन: प्रारंभ करने के लिए निश्चित रूप से हल नहीं करें - मेरे मैनुअल उलटा जियोकोडिंग

इसे हल करने का एकमात्र तरीका है हैंडसेट को पुनरारंभ करें। Relevant Issue38009 on support forums। लेकिन टिप्पणियों से मैं क्या समझता हूं कि डिवाइस को रीबूट करने से समस्या हमेशा हल करती है।

क्या यह सही है?
क्योंकि मेरे मामले में, बग वापस आ सकता है (आवृत्ति: महीने में एक या दो बार मुझे लगता है कि & मैं इस ऐप पर पूर्णकालिक हूं)।

क्या एप्लिकेशन के अंदर से geocoder को पुनरारंभ करने का एक तरीका है?

मेरे पास एकमात्र समाधान है जो नीचे दिए गए पते को "मैन्युअल रूप से" लाने के मामले में वैकल्पिक समाधान प्रदान करना है। क्या आपके पास कोई बेहतर है?

Dbg.d(TAG, "=== address_info FetchLocationTask - doInBackground"); 
new Thread(new Runnable() { 

    @Override 
    public void run() { 
     Looper.prepare(); 
     mHandler = new Handler(); 
     Looper.loop(); 
    } 
}).start(); 

    /** 
    * Implementation of a second method in case of failure: 
    * 
    */ 
    double lat = Double.parseDouble(args[0]); 
    double lng = Double.parseDouble(args[1]); 
    String address = String.format(Locale.ENGLISH, 
      "http://maps.googleapis.com/maps/api/geocode/json?latlng="+Double.toString(lat)+","+Double.toString(lng)+"&sensor=true&language="+Locale.getDefault().getCountry(), lat, lng); 
    Dbg.d(TAG, "fetching path : "+ address); 


    HttpGet httpGet = new HttpGet(address); 
    HttpClient client = new DefaultHttpClient(); 
    HttpResponse response; 
    StringBuilder stringBuilder = new StringBuilder(); 

    List<Address> retList = null; 

    try { 
     response = client.execute(httpGet); 
     HttpEntity entity = response.getEntity(); 
     InputStream stream = entity.getContent(); 
     int b; 
     while ((b = stream.read()) != -1) { 
      stringBuilder.append((char) b); 
     } 

     JSONObject jsonObject = new JSONObject(); 
     jsonObject = new JSONObject(stringBuilder.toString()); 


     retList = new ArrayList<Address>(); 


     if("OK".equalsIgnoreCase(jsonObject.getString("status"))){ 
      JSONArray results = jsonObject.getJSONArray("results"); 
      for (int i=0;i<results.length();i++) { 
       JSONObject result = results.getJSONObject(i); 
       String indiStr = result.getString("formatted_address"); 
       Address addr = new Address(Locale.ITALY); 
       addr.setAddressLine(0, indiStr); 
       Dbg.d(TAG, "adresse :"+addr.toString()); 
       retList.add(addr); 
      } 
     } 


    } catch (ClientProtocolException e) { 
     Dbg.e(TAG, "Error calling Google geocode webservice.", e); 
    } catch (IOException e) { 
     Dbg.e(TAG, "Error calling Google geocode webservice.", e); 
    } catch (JSONException e) { 
     Dbg.e(TAG, "Error parsing Google geocode webservice response.", e); 
    } 

    JSONObject jObj = new JSONObject(); 

    boolean found = false; 

    if (retList.size() > 0) { 

     Address a = retList.get(0); 

     String name = a.getAddressLine(0); 
     String city = a.getLocality(); 
     String postalCode = a.getPostalCode(); 
     String country = a.getCountryName(); 

     if (!TextUtils.isEmpty(name)) { 
      JsonUtils.setSringInJson(jObj, BookLocation.ADDRESS_NAME_KEY, name); 
      found = true; 
     } 
     if (!TextUtils.isEmpty(postalCode)) { 
      JsonUtils.setSringInJson(jObj, BookLocation.ADDRESS_POSTAL_CODE_KEY, postalCode); 
      found = true; 
     } 
     if (!TextUtils.isEmpty(city)) { 
      JsonUtils.setSringInJson(jObj, BookLocation.ADDRESS_CITY_KEY, city); 
      found = true; 
     } 
     if (!TextUtils.isEmpty(country)) { 
      JsonUtils.setSringInJson(jObj, BookLocation.ADDRESS_COUNTRY_KEY, country); 
      found = true; 
     } 

    } 
    mHandler.getLooper().quit(); 
    if (found) { 
     return jObj; 
    } else return null; 
+0

आपका लिंक यहाँ इशारा करते हुए किया जाना चाहिए: https://code.google.com/p/android/issues/detail?id=38009 जारी किए जाने की मेरी पढ़ने से, _no_, रिबूट स्थायी रूप से इस मुद्दे को हल नहीं करता है। –

+0

वास्तव में, इसे सही करें। – Poutrathor

उत्तर

0

राज्यों @mike से लिंक: एक फ़ॉलबैक क्रियान्वयन जियोकोडर हैंडलर और asynctask वर्ग दोनों की जरूरत है सिंक्रनाइज़ किए जाने का उपयोग कर - अगर कोई सेवा हम URL से पता प्राप्त कर सकते हैं की तरह। यह एकमात्र समाधान है जिसे हम दुर्भाग्य से @Poutrathor प्रदान कर सकते हैं।

यहाँ Service not Available - Geocoder Android

संदर्भ लें इसके अलावा हम रिबूट करने लेकिन कम से कम इसके बारे में एक समाधान सूचित उपयोगकर्ता के लिए मजबूर नहीं कर सकते।

+1

हैलो! आपका लिंक विफल हो गया है, इसे इस तरह बंद करें: [सेवा उपलब्ध नहीं है - जियोकोडर एंड्रॉइड] (लिंक) – Poutrathor

+0

धन्यवाद! @Poutrathor – MOSO

संबंधित मुद्दे