![]() |
Модераторы: javastic |
![]() ![]() ![]() |
|
Sanoend |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 27.4.2012 Репутация: нет Всего: нет |
Не как не могу решить проблему. Есть приложение. которое сканирует эфир на наличие Wi-Fi сетей.
Всё работает, если wi-fi был включен до запуска приложения. Но если сначала запустить приложение, а потом запустить Wi-Fi, то приложение просто вылетит. Код для сканирования списка АП взят от сюда http://www.androiddb.ru/content/snippets/s...rovodnykh-setei этот же пример встречается ещё в 100500 местах инета. Он везде одинаков и везде есть данная проблема. Пробовал перед mainWifi.startScan(); и mainWifi.getScanResults(); ставить условие if (mainWifi.getWifiState() == 3) и задержку после mainWifi.setWifiEnabled(true); пробовал и try catch пробовал не чего не помогает. Всю голову себе сломал. Помогите пожалуйста. Ниже лог ЛогКата 05-01 17:09:14.159: W/dalvikvm(21676): threadid=1: thread exiting with uncaught exception (group=0x40018578) 05-01 17:09:14.509: E/AndroidRuntime(21676): FATAL EXCEPTION: main 05-01 17:09:14.509: E/AndroidRuntime(21676): java.lang.RuntimeException: Unable to instantiate receiver com.wifilogger.WiFiStatusReceiver: java.lang.ClassNotFoundException: com.wifilogger.WiFiStatusReceiver in loader dalvik.system.PathClassLoader[/data/app/com.wifilogger-2.apk] 05-01 17:09:14.509: E/AndroidRuntime(21676): at android.app.ActivityThread.handleReceiver(ActivityThread.java:1777) 05-01 17:09:14.509: E/AndroidRuntime(21676): at android.app.ActivityThread.access$2400(ActivityThread.java:117) 05-01 17:09:14.509: E/AndroidRuntime(21676): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:985) 05-01 17:09:14.509: E/AndroidRuntime(21676): at android.os.Handler.dispatchMessage(Handler.java:99) 05-01 17:09:14.509: E/AndroidRuntime(21676): at android.os.Looper.loop(Looper.java:130) 05-01 17:09:14.509: E/AndroidRuntime(21676): at android.app.ActivityThread.main(ActivityThread.java:3687) 05-01 17:09:14.509: E/AndroidRuntime(21676): at java.lang.reflect.Method.invokeNative(Native Method) 05-01 17:09:14.509: E/AndroidRuntime(21676): at java.lang.reflect.Method.invoke(Method.java:507) 05-01 17:09:14.509: E/AndroidRuntime(21676): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 05-01 17:09:14.509: E/AndroidRuntime(21676): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) 05-01 17:09:14.509: E/AndroidRuntime(21676): at dalvik.system.NativeStart.main(Native Method) 05-01 17:09:14.509: E/AndroidRuntime(21676): Caused by: java.lang.ClassNotFoundException: com.wifilogger.WiFiStatusReceiver in loader dalvik.system.PathClassLoader[/data/app/com.wifilogger-2.apk] 05-01 17:09:14.509: E/AndroidRuntime(21676): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240) 05-01 17:09:14.509: E/AndroidRuntime(21676): at java.lang.ClassLoader.loadClass(ClassLoader.java:551) 05-01 17:09:14.509: E/AndroidRuntime(21676): at java.lang.ClassLoader.loadClass(ClassLoader.java:511) 05-01 17:09:14.509: E/AndroidRuntime(21676): at android.app.ActivityThread.handleReceiver(ActivityThread.java:1768) |
|||
|
||||
Dapo |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 417 Регистрация: 18.4.2002 Репутация: 1 Всего: 1 |
А если в программе отследить этот момент и включить из программы? и если все пучком то прикрутить диалог.
|
|||
|
||||
Sanoend |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 27.4.2012 Репутация: нет Всего: нет |
Dapo я наверное не очень ясно описал ситуацию. Дело в том. что при включении из программы будет появляться та же самая проблема.
Дело в том, что для сканирования Wi-Fi сетей я создаю BroadcastReceiver. Который по сути висит системным процессом. Даже если моё приложение не запущенно. Если упростить код WifiReceiver extends BroadcastReceiver до необходимого минимума для понимания проблемы то получается примерно вот так: class WifiReceiver extends BroadcastReceiver { public void onReceive(Context c, Intent intent) { sb = new StringBuilder(); if (mainWifi.getWifiState() == WifiManager.WIFI_STATE_ENABLE ){ wifiList = mainWifi.getScanResults(); for(int i = 0; i < wifiList.size(); i++){ sb.append(new Integer(i+1).toString() + "."); sb.append((wifiList.get(i)).toString()); sb.append("\n"); } mainText.setText(sb); } } } И даже в таком варианте проблема проявляется. Тоесть пока Wi-Fi включен или выключен всё в порядке. Но в момент его переключения процесс вылетает. Что делать ума не приложу, если верить документации на android SDK, то всё верно, но работает не так как надо. |
|||
|
||||
Sanoend |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 27.4.2012 Репутация: нет Всего: нет |
Вот нарыл похожую проблему у человека
http://www.android-hilfe.de/android-app-en...app-crasht.html Но в силу языкового барьера так и не понял решили эту проблему или нет. |
|||
|
||||
Sanoend |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 27.4.2012 Репутация: нет Всего: нет |
Разобрался. Проблема была не в BroadcastReceiver. а в том как я его использую.
Вместо mainWifi.setWifiEnabled(true); mainWifi.startScan(); надо было this.mainWifi.startScan(); this.mainWifi.setWifiEnabled(true); то есть добавить this и поменять порядок. С this всё понятно, а вот зачем менять порядок я не понимаю!!! |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Android | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |