Wifi의 특정 AP를 disconnected에서 connected할 경우 broadcast로 해당 intent를 받아서

처리하는 코드를 구현했는데요.

제목과 같이 disconnected에서 connected하는 순간 에러가 납니다.

아래 제 manifest와 코드 삽입하니 조언 부탁 드립니다.

 

1. manifest

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="org.tacademy.listview"
      android:versionCode="1"
      android:versionName="1.0">
   

    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".WifiListViewActivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <receiver android:name=".WifiReceiver">
            <intent-filter>   
                <action android:name="android.net.wifi.STATE_CHANGE"/>                            
            </intent-filter>
        </receiver>

    </application>
   
    <uses-sdk android:minSdkVersion="8" />
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
</manifest>

2. 코드

class WifiReceiver extends BroadcastReceiver {
        public void onReceive(Context c, Intent intent) {
          SupplicantState supState;
             //sb = new StringBuilder();
             wifiList = mainWifi.getScanResults();
             //values = new String[wifiList.size()];
             System.out.println(values.length);
             System.out.println(wifiList.size());
             for(int i = 0; i < (wifiList.size()); i++) {
                 //sb.append(new Integer(i+1).toString() + ".");
                 values[i] = (wifiList.get(i)).SSID;
                 //sb.append("\n\n");

             }
             supState = wifiInfo.getSupplicantState();
             System.out.println(supState);
            
             if(intent.getAction().equals(WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION)){
              boolean connected = intent.getBooleanExtra(WifiManager.EXTRA_SUPPLICANT_CONNECTED, false);      
              if(!connected) {              
               //Start service for disconnected state here
               System.out.println("network is disconnected");
               }      
              }else if(intent.getAction().equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)){          
               NetworkInfo netInfo = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);          
               if( netInfo.isConnected() )          
               {              
                //Start service for connected state here. 

 

3. 에러 로그

01-25 22:47:33.026: D/AndroidRuntime(5524): Shutting down VM
01-25 22:47:33.026: W/dalvikvm(5524): threadid=1: thread exiting with uncaught exception (group=0x4001d7f0)
01-25 22:47:33.030: E/AndroidRuntime(5524): FATAL EXCEPTION: main
01-25 22:47:33.030: E/AndroidRuntime(5524): java.lang.RuntimeException: Unable to instantiate receiver org.tacademy.listview.WifiReceiver: java.lang.ClassCastException: org.tacademy.listview.WifiReceiver
01-25 22:47:33.030: E/AndroidRuntime(5524):  at android.app.ActivityThread.handleReceiver(ActivityThread.java:2789)
01-25 22:47:33.030: E/AndroidRuntime(5524):  at android.app.ActivityThread.access$3200(ActivityThread.java:125)
01-25 22:47:33.030: E/AndroidRuntime(5524):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2083)
01-25 22:47:33.030: E/AndroidRuntime(5524):  at android.os.Handler.dispatchMessage(Handler.java:99)
01-25 22:47:33.030: E/AndroidRuntime(5524):  at android.os.Looper.loop(Looper.java:123)
01-25 22:47:33.030: E/AndroidRuntime(5524):  at android.app.ActivityThread.main(ActivityThread.java:4627)
01-25 22:47:33.030: E/AndroidRuntime(5524):  at java.lang.reflect.Method.invokeNative(Native Method)
01-25 22:47:33.030: E/AndroidRuntime(5524):  at java.lang.reflect.Method.invoke(Method.java:521)
01-25 22:47:33.030: E/AndroidRuntime(5524):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
01-25 22:47:33.030: E/AndroidRuntime(5524):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
01-25 22:47:33.030: E/AndroidRuntime(5524):  at dalvik.system.NativeStart.main(Native Method)
01-25 22:47:33.030: E/AndroidRuntime(5524): Caused by: java.lang.ClassCastException: org.tacademy.listview.WifiReceiver
01-25 22:47:33.030: E/AndroidRuntime(5524):  at android.app.ActivityThread.handleReceiver(ActivityThread.java:2780)
01-25 22:47:33.030: E/AndroidRuntime(5524):  ... 10 more

                System.out.println("network is connected");
               }         
              }

}