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");
}
}
}