2012-01-08 15 views
1
Geocoder geocoder = new Geocoder(getApplicationContext(), Locale.ENGLISH); 
try { 
    List<Address> addresses = geocoder.getFromLocation(lat,lon, 1); <--Exception 

このコードは例外サービスが利用できません。 誰でも助けてくれますか?私はそれがA 2.2のバグだと読んだのですが、api 10はA 2.3.3ですので、実際にはうまくいくはずです。android geocoder api 10サービスが利用できません

+0

読む関連の質問、これはバグです http://stackoverflow.com/questions/3619924/android-geocoder-why-do-i-get-the-service-is-not-available の点に注意してください。 http://stackoverflow.com/questions/4761052/why-is-android-geocoder-throwing-a-service-not-available-exception –

+0

住所から住所を取得する機会はありますか? – santBart

答えて

5

ANSWER:あなたがエミュレータを使用している場合

まず、「のGoogle API」の代わりに、基本的な「アンドロイド」のSDKのいずれかにAVDデバイスのための「目標」を設定してみてください。したがって、2.3.3をターゲットにしたい場合は、「Google API(Google Inc.) - APIレベル10」とではなく、「Android 2.3.3 - APIレベル10」を使用します。

背景INFO動作するGeocoder.getFromLocation...方法に対するrequiredある

Google APIのアドオンはbackend service implementation(検索 "ジオコーダバックエンド")を含みます。

ジオコーダクラスは、これらのメソッドが機能するためにあなたのAVDがGoogleのAPIを対象としなければならない理由であるコアのAndroidフレームワーク

には含まれていないバックエンドサービスを必要とします。それが動作しない場合は、実際のデバイスでテストを試してみてください。可能性のあるバグ以外に、この例外が発生する理由は、インターネットに問題があるか、接続が不足しているか、またはバックエンドサービスがそのデバイスに存在しない可能性が高いからです。

Googleサービスやマップなどのアプリを含むほとんどの端末には、バックエンドが実装されていると考えられます。これがどれほど正確かわかりません。

また、バックエンド実装が存在する場合にtrueを返すAPI9,Geocoder.isPresent()で始まるメソッドもあります。しかしは、私はAmazonのKindleの火災にそれをテストがtrueを返したので、これは信頼できないことが判明しているが、getFromLocationName()電話をかけるとき、私はまだそれがバックエンドが存在するかどうかを判断するための最も確実な方法だIOException: Service Not Available

を得ましたgetFromLocation...コールを作成し、addressesフィールドがnullかどうか、またはListが空の場合にのみ参照してください。単純にno matches foundがある場合、これらのメソッドがnullまたは空のリストを返す可能性があるというあいまいさがあります。

関連する問題