IOException ничего не делает - PullRequest
1 голос
/ 07 марта 2012

Я пишу приложение для Android, используя API карт Android.У меня есть кнопка, вызывающая текущее местоположение, и я пытаюсь напечатать адрес, используя функцию Geocoder getFromLocation.

Когда я нажимаю кнопку, ничего не происходит, когда я использую e.printStackTrace(), приложение взрывается.

Вот соответствующий код:

    public void gpsToastButton(View view) {

        Location gps = locationManager
                .getLastKnownLocation(LocationManager.GPS_PROVIDER);


        if (gps != null) {

            int lat = (int) (gps.getLatitude()  * 1E6);
            int lng = (int) (gps.getLongitude()  * 1E6);

            Geocoder myLocation = new Geocoder(getApplicationContext(), Locale.getDefault());   
            try {
                List<Address> myList = myLocation.getFromLocation(lat, lng, 1);
                String message = String
                        .format("gps:" + myList,
                                gps.getLongitude(), gps.getLatitude()
                                );
                Toast.makeText(GoogleMapActivity.this, message, Toast.LENGTH_LONG)
                        .show();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                String message2 = String
                        .format("kein anschluss unter dieser nummer");
                Toast.makeText(GoogleMapActivity.this, message2, Toast.LENGTH_LONG);
            }








        }

else{...
    }

и LogCat после нажатия кнопки:

03-07 05:16:33.318: E/AndroidRuntime(883): FATAL EXCEPTION: main
03-07 05:16:33.318: E/AndroidRuntime(883): java.lang.IllegalStateException: Could not execute method of the activity
03-07 05:16:33.318: E/AndroidRuntime(883):  at android.view.View$1.onClick(View.java:2072)
03-07 05:16:33.318: E/AndroidRuntime(883):  at android.view.View.performClick(View.java:2408)
03-07 05:16:33.318: E/AndroidRuntime(883):  at android.view.View$PerformClick.run(View.java:8816)
03-07 05:16:33.318: E/AndroidRuntime(883):  at android.os.Handler.handleCallback(Handler.java:587)
03-07 05:16:33.318: E/AndroidRuntime(883):  at android.os.Handler.dispatchMessage(Handler.java:92)
03-07 05:16:33.318: E/AndroidRuntime(883):  at android.os.Looper.loop(Looper.java:123)
03-07 05:16:33.318: E/AndroidRuntime(883):  at android.app.ActivityThread.main(ActivityThread.java:4627)
03-07 05:16:33.318: E/AndroidRuntime(883):  at java.lang.reflect.Method.invokeNative(Native Method)
03-07 05:16:33.318: E/AndroidRuntime(883):  at java.lang.reflect.Method.invoke(Method.java:521)
03-07 05:16:33.318: E/AndroidRuntime(883):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
03-07 05:16:33.318: E/AndroidRuntime(883):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
03-07 05:16:33.318: E/AndroidRuntime(883):  at dalvik.system.NativeStart.main(Native Method)
03-07 05:16:33.318: E/AndroidRuntime(883): Caused by: java.lang.reflect.InvocationTargetException
03-07 05:16:33.318: E/AndroidRuntime(883):  at google.map.activity.GoogleMapActivity.gpsToastButton(GoogleMapActivity.java:64)
03-07 05:16:33.318: E/AndroidRuntime(883):  at java.lang.reflect.Method.invokeNative(Native Method)
03-07 05:16:33.318: E/AndroidRuntime(883):  at java.lang.reflect.Method.invoke(Method.java:521)
03-07 05:16:33.318: E/AndroidRuntime(883):  at android.view.View$1.onClick(View.java:2067)
03-07 05:16:33.318: E/AndroidRuntime(883):  ... 11 more
03-07 05:16:33.318: E/AndroidRuntime(883): Caused by: java.io.IOException: Service not Available
03-07 05:16:33.318: E/AndroidRuntime(883):  at android.location.Geocoder.getFromLocation(Geocoder.java:117)
03-07 05:16:33.318: E/AndroidRuntime(883):  ... 15 more

Заранее спасибо.

// Редактировать : Хорошо, я решил это сейчас.Я бросаю IOException в класс gpsToastButton и ловлю его после последнего оператора else.Спасибо за помощь!

1 Ответ

0 голосов
/ 07 марта 2012

Ключом к этому является последний «вызванный» «Сервис недоступен».

Другой ответ на SO должен помочь .

Похоже, "... на любом устройстве, которое не поставляется с Market, GMail и т. д., также будет отсутствовать серверная часть Geocoder ".

...