Intereting Posts
Как показать только часть растрового изображения – Нет возможности setProgressDrawable на RemoteViews Могу ли я использовать переменные в XML для Android? Невозможно правильно провести линию над элементами gridview через ячейки textview в Android Менеджер файлов cookie, вызывающий фатальный сигнал 11 Высокая загрузка процессора с помощью эмулятора Android (qemu-system-i386.exe) Пользовательский шрифт в android ListView Цвет фона Android ListView всегда показывает серый цвет Android: Как иметь общее меню в каждой (List) Activity без повторной записи переопределенных методов? Андроид для потоковой передачи криков в 2.2 Android – загрузка фрагмента Подключить 2 или более Android-клиентов напрямую Какую версию Eclipse я использую для Android? Ящик Android Navigation над вкладками Получение «E / TokenRequestor: у вас неправильные конфигурации, связанные с OAuth2. Подробная ошибка: INVALID_AUDIENCE 'даже после предоставления точных идентификаторов клиентов

Не подключен. Вызовите Connect или подождите, пока onConnected () будет вызван исключением внутри onConnected?

У меня есть этот onConnected call back, реализованный для Google LocationClient API :

 @Override public void onConnected(Bundle arg0) { if (lc != null) { lastKnownLocation = lc.getLastLocation(); LocationRequest request = new LocationRequest(); request.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); request.setFastestInterval(MIN_TIME_BETWEEN_LOCATION_UPDATES); request.setSmallestDisplacement(MIN_DISTANCE_BETWEEN_LOCATION_UPDATES); lc.requestLocationUpdates(request, ll); } } 

И по какой-то причине иногда эта строка:

 lastKnownLocation = lc.getLastLocation(); 

Дает мне это исключение:

 java.lang.IllegalStateException: Not connected. Call connect() and wait for onConnected() to be called. at com.google.android.gms.internal.de.bc() at com.google.android.gms.internal.ez.a() at com.google.android.gms.internal.ez$c.bc() at com.google.android.gms.internal.ey.getLastLocation() at com.google.android.gms.internal.ez.getLastLocation() at com.google.android.gms.location.LocationClient.getLastLocation() at com.citylifeapps.cups.helputils.UserLocation.onConnected(UserLocation.java:115) at com.google.android.gms.internal.de.aZ() at com.google.android.gms.internal.de$fa() at com.google.android.gms.internal.de$fa() at com.google.android.gms.internal.de$b.be() at com.google.android.gms.internal.de$a.handleMessage() at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:157) at android.app.ActivityThread.main(ActivityThread.java:5356) at java.lang.reflect.Method.invokeNative(Method.java) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081) at dalvik.system.NativeStart.main(NativeStart.java) 

Я действительно не понимаю, почему это происходит. Очевидно, что я пытаюсь получить последнее известное местоположение с помощью LocationClient после запуска метода подключения и ожидая обратного вызова onConnected и, как я понимаю, вызов onConnected вызывается, когда у меня есть соединение. Так как я могу получить "Not connected ..." исключение? Кто-нибудь знает?

Благодарю.

Solutions Collecting From Web of "Не подключен. Вызовите Connect или подождите, пока onConnected () будет вызван исключением внутри onConnected?"

Возможно, как и я, вы вообще не вызывали connect (). Попробуйте вызов, включенный в метод onStart:

 @Override protected void onStart() { super.onStart(); mGoogleApiClient.connect(); } 

У меня такая же проблема на Samsung S4 и S3 mini.

Просто заверните с try / catch getLastLocation () и начните получать фактическое местоположение из requestirstLocationUpdate:

 @Override public void onConnected(Bundle arg0) { if (lc != null) { try{ lastKnownLocation = lc.getLastLocation(); catch(Exception ex){ /* log error */ } LocationRequest request = new LocationRequest(); request.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); request.setFastestInterval(MIN_TIME_BETWEEN_LOCATION_UPDATES); request.setSmallestDisplacement(MIN_DISTANCE_BETWEEN_LOCATION_UPDATES); lc.requestLocationUpdates(request, ll); } } 

Я пробовал это:

 @Override public void onConnected(Bundle arg0) { Log.w(TAG, "onConnected"); if (!mLocationClient.isConnecting()) { mLocationClient.getLastLocation(); } } 

Пока это отлично работает для меня, но я совершенно не знаю, почему.

Немного поздно на вечеринку, но на всякий случай кто-то тоже натыкается на эту проблему. В моем случае у меня такое же сообщение об ошибке, что и Эмиль. После некоторой отладки я заметил, что (в моем конкретном коде) я дважды вызывал mlocationClient.connect (), второй раз с небольшой задержкой ок. 100 миллисекунд. Я считаю, что первый вызов вызвал обратный вызов onConnect (), но затем второй вызов connect () нарушил соединение.

Решение в моем случае состояло в проверке перед подключением, если соединение еще не было, аналогично расширенному диапазону. Я не уверен, почему Google отключает mlocationClient при повторном вызове connect (), но в моем случае он решил проблему.

 if (!mLocationClient.isConnected() && !mLocationClient.isConnecting()){ mLocationClient.connect(); }