2012-09-21 19 views
6

मैं दोनों एमुलेटर और मेरे फोन (Android 4.1 के साथ नेक्सस एस) पर Geocoder.getLocationFromName() विधि का उपयोग कर रहा पर उपलब्ध नहीं है और मैं निम्न अपवाद प्राप्त करें:एंड्रॉयड Geocoder.getLocationFromName() फेंकता IOException: सेवा डिवाइस

java.io.IOException: Service not Available 

एमुलेटर (example) पर दिखाई देने के बारे में कई प्रश्न हैं, और उनमें से अधिकतर कहते हैं कि यह एमुलेटर का एक विशिष्ट संस्करण है जिसमें समस्या है। हालांकि, अपवाद मेरे एवीडी (2.3 और 4.1) और मेरे फोन दोनों पर दिखाई देता है।

मेरे फोन और एवीडी दोनों में इंटरनेट कनेक्शन है। मेरा एपीआई संस्करण 16 (एंड्रॉइड 4.1) है, लेकिन मैंने पुराने लोगों के साथ भी कोशिश की। दोनों एवीडी में Google एपीआई शामिल हैं।

कोई विचार क्या हो रहा है?

यह प्रासंगिक कोड का टुकड़ा है:

Geocoder myGeocoder = new Geocoder(getApplicationContext(), Locale.getDefault()); 
List<Address> newAddresses = myGeocoder.getFromLocationName(arg0.toString(), 10); 

और ये मेरे प्रकट है:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.asdasd" android:versionCode="6" android:versionName="1.3.1"> 
    <uses-sdk android:minSdkVersion="16" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <application android:icon="@drawable/ic_launcher_asdasd" 
     android:label="@string/app_name"> 
     <activity android:name=".AsdasdActivity" android:label="@string/app_name" 
      android:screenOrientation="portrait" android:windowSoftInputMode="stateHidden"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity android:name="com.google.ads.AdActivity" 
      android:configChanges="keyboard|keyboardHidden|orientation" /> 
    </application> 
</manifest> 
+0

बस संदर्भ के लिए, इस समस्या से भी संबंधित हो सकता है: http://code.google.com/p/android/issues/detail?id=38009 डिवाइस का रीबूट इसे ठीक करने लगता है। – Somatik

+0

कोई फर्क नहीं पड़ता कि मैंने कितने रीबूट किए हैं, मेरे मामले में कुछ भी नहीं हुआ। –

उत्तर

7

सुनिश्चित करें कि आपके आवेदन के निर्माण लक्ष्य Google API के और नहीं बस में से एक पर सेट है एंड्रॉइड 4.0 (या इसी तरह)। आप इस प्रोजेक्ट पर राइट-क्लिक करके और "प्रॉपर्टीज" का चयन करके "एंड्रॉइड" चुनकर ग्रहण में इस सेटिंग को बदल सकते हैं। वैकल्पिक रूप से, आप बस project.properties फ़ाइल कुछ करने के लिए निम्नलिखित की तरह संपादित कर सकते हैं:

# Project target 
target=Google Inc.:Google APIs:16 

कारण यह है कि Geocoder वर्ग कोर एंड्रॉयड ढांचे में मौजूद है, लेकिन कोड को Google API के योगदान ठीक ढंग से काम पर निर्भर करता है। भले ही आपके एवीडी में Google एपीआई शामिल हों, फिर भी आपकी परियोजना को उस विशिष्ट निर्माण लक्ष्य के विरुद्ध बनाया जाना चाहिए।

+0

उत्तर के लिए धन्यवाद। लेकिन जैसा कि मैंने पहले ही कहा है, मैं Google एपीआई एवीडी का उपयोग कर रहा हूं। और मुझे भी अपने फोन पर एक ही समस्या है। –

+0

अरे @ मार्कोसफ्रागाकिस, आपने कहा कि आप अपने एवीडी में Google एपीआई का उपयोग कर रहे हैं, लेकिन क्या आपके प्रोजेक्ट का निर्माण लक्ष्य भी उसी Google एपीआई स्तर पर सेट है? ये दो अलग-अलग सेटिंग्स हैं। – twaddington

+1

आप सही हैं। मैंने आपके द्वारा सुझाए गए लक्ष्य को ग्रहण किया है (ग्रहण के माध्यम से)। हालांकि, अब मुझे "java.io.IOException: सर्वर से प्रतिक्रिया पार्स करने में असमर्थ" मिलता है। मुझे लगता है कि यह एक अलग समस्या है, इसलिए मैं आपके उत्तर को सही के रूप में चिह्नित करूंगा। हालांकि, अगर आपके पास कोई सुझाव है, तो वे स्वागत से अधिक हैं। धन्यवाद। –