2014-12-30 1 views
1

Это часть кода, имеющего проблемы:BluetoothSocket IsConnected() функция вызывает java.lang.NoSuchMethodError во время выполнения

btSocketForCSRComm.connect(); 
    Log.d("MYLOG", "CALLED btSocketForCSRComm.connect()"); 

    do{ 

    }while(btSocketForCSRComm.isConnected()!=true); 
    Log.d("MYLOG", "btSocketForCSRComm CONNECTION VERIFIED"); 

Среда IDE (Android SDK) не показывает каких-либо ошибок (Logcat работает отлично ДО первый Log.d), но в течение цикла while он показывает ошибку

12-30 12:18:12.661: E/AndroidRuntime(17795): FATAL EXCEPTION: main 
12-30 12:18:12.661: E/AndroidRuntime(17795): java.lang.NoSuchMethodError: android.bluetooth.BluetoothSocket.isConnected 
12-30 12:18:12.661: E/AndroidRuntime(17795): at com.example.bluetoothbasic1.MainActivity$1.onReceive(MainActivity.java:138) 
12-30 12:18:12.661: E/AndroidRuntime(17795): at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:709) 
12-30 12:18:12.661: E/AndroidRuntime(17795): at android.os.Handler.handleCallback(Handler.java:587) 
12-30 12:18:12.661: E/AndroidRuntime(17795): at android.os.Handler.dispatchMessage(Handler.java:92) 
12-30 12:18:12.661: E/AndroidRuntime(17795): at android.os.Looper.loop(Looper.java:130) 
12-30 12:18:12.661: E/AndroidRuntime(17795): at android.app.ActivityThread.main(ActivityThread.java:3691) 
12-30 12:18:12.661: E/AndroidRuntime(17795): at java.lang.reflect.Method.invokeNative(Native Method) 
12-30 12:18:12.661: E/AndroidRuntime(17795): at java.lang.reflect.Method.invoke(Method.java:507) 
12-30 12:18:12.661: E/AndroidRuntime(17795): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847) 
12-30 12:18:12.661: E/AndroidRuntime(17795): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605) 
12-30 12:18:12.661: E/AndroidRuntime(17795): at dalvik.system.NativeStart.main(Native Method) 

Почему это происходит? Если функция isConnect() не существует, то почему в IDE не было ошибок? Есть ли другой способ определить, подключен ли BluetoothSocket?

ответ

-1

Основной причиной является то, что вы, скорее всего, скомпилировали класс против другой версии класса, у которой отсутствует метод, чем тот, который вы используете при его запуске.

Если исключение появляется при вызове метода на объектах, созданных вами по классам, то ваш процесс сборки кажется ошибочным. Убедитесь, что файлы классов, которые вы фактически запускаете, обновляются при компиляции.

+0

как это сделать? Это не класс, который я сделал, это из библиотеки андроида. – user13267

2

Метод isConnected() был добавлен в сэндвич с мороженым (SDK 14), как указано в the official API docs. Если вы используете SDK 14 или новее, чтобы скомпилировать свой код, но попробуйте запустить его на более старом устройстве, тогда код завершится неудачно с java.lang.NoSuchMethodError, как и для вас.

Есть по крайней мере два способа это исправить:

  1. Установить минимальную версию SDK до 14 в манифесте Android (см uses-sdk).
  2. Проверьте версию Android во время выполнения и не вызывайте этот метод, если устройство не является ICS или новее (см. Build.VERSION).
+0

Телефон Samsung Galaxy S2 с программным обеспечением по умолчанию, которое было с ним (Gingerbread, я думаю, это называется). Так это проблема аппаратного обеспечения? Должен ли я получить более высокое устройство спецификации? – user13267

+0

Я подозреваю, что проблема связана с версией Android, а не с самим оборудованием. –

+0

Обновление программного обеспечения на этом телефоне в настоящий момент невозможно. Если я смогу получить планшет с Jellybean, вы думаете, что он работает? – user13267

Смежные вопросы