사용하는 앱은 ActivityGroup으로 구성되어있습니다.


네트워크의 변화를 체크해서

네트워크 연결이 끊어지면 다이얼로그를 띄우는 걸 하려고 합니다.

그래서

BroadcastReceiver를 상속받은 클래스를 receiver에 등록시켜서 확인 중입니다.

근데 문제점은 Dialog가 뜨지않고 강제종료가 되어버립니다.


-소스-

public class ConnReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
            ConnectivityManager connectivityManager = (ConnectivityManager) context
                    .getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo mobile = connectivityManager
                    .getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
            NetworkInfo wifi = connectivityManager
                    .getNetworkInfo(ConnectivityManager.TYPE_WIFI);
            NetworkInfo mobile4g = connectivityManager
                    .getNetworkInfo(ConnectivityManager.TYPE_WIMAX);
            boolean lte_4g = false;
            if (mobile4g != null) {
                lte_4g = mobile4g.isConnected();
            }

            if (wifi.isConnected() || mobile.isConnected() || lte_4g) {
                // Do Something
            } else {
                System.out.println("끊김");
                AlertDialog alert = new AlertDialog.Builder(context)
                        .setTitle("안내").setMessage("끊김")
                        .setPositiveButton("확인", null).show();

            }

        }
    }
}


-Manifest-

 <receiver android:name=".ConnReceiver"
            android:enabled="true"
            android:priority="0">
            <intent-filter>
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
            </intent-filter>


-LogCat-

05-17 18:59:40.605: E/AndroidRuntime(31492): FATAL EXCEPTION: main
05-17 18:59:40.605: E/AndroidRuntime(31492): java.lang.RuntimeException: Unable to start receiver com.wiz.bellringallandroid.ConnReceiver: java.lang.ClassCastException: android.app.ReceiverRestrictedContext
05-17 18:59:40.605: E/AndroidRuntime(31492):     at android.app.ActivityThread.handleReceiver(ActivityThread.java:1809)
05-17 18:59:40.605: E/AndroidRuntime(31492):     at android.app.ActivityThread.access$2400(ActivityThread.java:117)
05-17 18:59:40.605: E/AndroidRuntime(31492):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:985)
05-17 18:59:40.605: E/AndroidRuntime(31492):     at android.os.Handler.dispatchMessage(Handler.java:99)
05-17 18:59:40.605: E/AndroidRuntime(31492):     at android.os.Looper.loop(Looper.java:130)
05-17 18:59:40.605: E/AndroidRuntime(31492):     at android.app.ActivityThread.main(ActivityThread.java:3691)
05-17 18:59:40.605: E/AndroidRuntime(31492):     at java.lang.reflect.Method.invokeNative(Native Method)
05-17 18:59:40.605: E/AndroidRuntime(31492):     at java.lang.reflect.Method.invoke(Method.java:507)
05-17 18:59:40.605: E/AndroidRuntime(31492):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847)
05-17 18:59:40.605: E/AndroidRuntime(31492):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605)
05-17 18:59:40.605: E/AndroidRuntime(31492):     at dalvik.system.NativeStart.main(Native Method)
05-17 18:59:40.605: E/AndroidRuntime(31492): Caused by: java.lang.ClassCastException: android.app.ReceiverRestrictedContext
05-17 18:59:40.605: E/AndroidRuntime(31492):     at com.wiz.bellringallandroid.ConnReceiver.onReceive(ConnReceiver.java:25)
05-17 18:59:40.605: E/AndroidRuntime(31492):     at android.app.ActivityThread.handleReceiver(ActivityThread.java:1798)
05-17 18:59:40.605: E/AndroidRuntime(31492):     ... 10 more


이유가 뭘까요


보통 context를 넘기면 되던데

예제에도 그렇게 되어있고...ㅠㅠ


ActivityGroup에선 dialog를 띄울 때 context값에 getParent()를 넣거든요

근데 위의 클래스에선 getParent()도 안써지구요


ㅠ이유가 뭘까요


ActivityGroup을 안쓴 액티비티 창에서 네트워크변화체크해서 다이얼로그를 띄워도 같은 에러를 보여주네요 ㅠㅠ