개발일기(10월 12일) - 안드로이드 앱 인터넷 연결 상태 확인 및 처리 추가
문제:
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