프로그래밍/ 안드로이드어플만들기

개발일기(10월 12일) - 안드로이드 앱 인터넷 연결 상태 확인 및 처리 추가

kugancity 2021. 10. 12. 00:58
반응형

 

문제:

webview를 사용하기 때문에 인터넷 연결이 안될경우 앱 사용을 할 수 없음.

사용자에게는 앱 오류로 보임. 

 

 

 

 

 

 

 

 

 

작업:

인터넷 연결이 안될 경우 사용자에게 언어별로 상황 알리기 

 

 

 

 

안드로이드 앱 인터넷 연결 상태 확인 및 처리 추가

 

 

 

1. manifest 에 아래 추가 

 

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

 

 

2.  webview 호출하기 전에 MainActivity.java에 아래 코드 추가

 

ConnectivityManager cm =
                (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);

        NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
        boolean isConnected = activeNetwork != null &&
                activeNetwork.isConnectedOrConnecting();

        if(!isConnected)
        {

            new AlertDialog.Builder(this).setTitle("You Are Offline.").setMessage("Please connect to the internet to use the app")
                    .setPositiveButton("Exit", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                            dialog.dismiss();
                            finish();
                        }
                    })
                    .setCancelable(false).show();


        }

 

3. 하나의 언어만 지원하면 2에서 끝나도 상관없지만

   앱에서 다국어를 지원하기 때문에 각 언어에 맞춰 번역을 추가해줘야한다. 

   string.xml 에서 open editor를 클릭한다. 

 

 

편집기의 왼쪽 위에 있는 +를 눌러 추가하려는 문구의 string key와 기본 value를 설정한다. 

 

 

그러면 편집기에 기존에 지원하던 언어별로 번역된 문구를 추가할 수 있다.

일본어 번역 문구는 확인해야 해서 일단 영어와 동일하게 적용해둠.  

 

 

 

 

마지막으로 추가된 번역을 다시 코드에 적용하면 끝. 

 

 

ConnectivityManager cm =
                (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);

        NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
        boolean isConnected = activeNetwork != null &&
                activeNetwork.isConnectedOrConnecting();

        if(!isConnected)
        {

            new AlertDialog.Builder(this).setTitle(R.string.dialog_check_internet_title).setMessage(R.string.dialog_check_internet_content)
                    .setPositiveButton(R.string.exit, new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                            dialog.dismiss();
                            finish();
                        }
                    })
                    .setCancelable(false).show();


        }

 

 

 

아래와 같이 언어별 안내 문구가 추가되는것을 확인할 수 있다. 

 

 

 

 

 

 

참고

https://onlyfor-me-blog.tistory.com/322

https://developer.android.com/training/monitoring-device-state/connectivity-status-type?hl=ko#java 

https://developer.android.com/guide/topics/ui/dialogs?hl=ko 

https://yebon-kim.tistory.com/10

728x90
반응형