티스토리 뷰

개발/안드로이드

인터넷 연결 확인하기

맨날치킨 2023. 1. 4. 15:05
반응형

Stack Overflow에 자주 검색, 등록되는 문제들과 제가 개발 중 찾아 본 문제들 중에서 나중에도 찾아 볼 것 같은 문제들을 정리하고 있습니다.

Stack Overflow에서 가장 먼저 확인하게 되는 가장 높은 점수를 받은 Solution과 현 시점에 도움이 될 수 있는 가장 최근에 업데이트(최소 점수 확보)된 Solution을 각각 정리하였습니다.

 

아래 word cloud를 통해 이번 포스팅의 주요 키워드를 미리 확인하세요.

Android check internet connection

Android 인터넷 연결 확인

 문제 내용 

I want to create an app that uses the internet and I'm trying to create a function that checks if a connection is available and if it isn't, go to an activity that has a retry button and an explanation.

인터넷을 사용하는 앱을 만들고 싶고 연결이 가능한지 확인하고 연결이 안되면 재시도 버튼과 설명이 있는 액티비티로 이동하는 기능을 만들려고 합니다.

 

Attached is my code so far, but I'm getting the error Syntax error, insert "}" to complete MethodBody.

지금까지 제 코드를 첨부했지만 Syntax error, insert "}" to complete MethodBody 오류가 발생했습니다.

 

Now I have been placing these in trying to get it to work, but so far no luck... Any help would be appreciated.

지금 저는 이것을 작동 시키려고 노력했지만 지금까지는 운이 없었습니다 ... 어떤 도움을 주시면 감사하겠습니다.
public class TheEvoStikLeagueActivity extends Activity {
    private final int SPLASH_DISPLAY_LENGHT = 3000;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.main);

        private boolean checkInternetConnection() {
            ConnectivityManager conMgr = (ConnectivityManager) getSystemService (Context.CONNECTIVITY_SERVICE);
            // ARE WE CONNECTED TO THE NET
            if (conMgr.getActiveNetworkInfo() != null
                    && conMgr.getActiveNetworkInfo().isAvailable()
                    && conMgr.getActiveNetworkInfo().isConnected()) {

                return true;

                /* New Handler to start the Menu-Activity
                 * and close this Splash-Screen after some seconds.*/
                new Handler().postDelayed(new Runnable() {
                    public void run() {
                        /* Create an Intent that will start the Menu-Activity. */
                        Intent mainIntent = new Intent(TheEvoStikLeagueActivity.this, IntroActivity.class);
                        TheEvoStikLeagueActivity.this.startActivity(mainIntent);
                        TheEvoStikLeagueActivity.this.finish();
                    }
                }, SPLASH_DISPLAY_LENGHT);
            } else {
                return false;

                Intent connectionIntent = new Intent(TheEvoStikLeagueActivity.this, HomeActivity.class);
                TheEvoStikLeagueActivity.this.startActivity(connectionIntent);
                TheEvoStikLeagueActivity.this.finish();
            }
        }
    }

 

 

 높은 점수를 받은 Solution 

This method checks whether mobile is connected to internet and returns true if connected:

이 함수는 모바일이 인터넷에 연결되어 있는지 확인하고 연결되어 있으면 true를 반환합니다:
private boolean isNetworkConnected() {
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

    return cm.getActiveNetworkInfo() != null && cm.getActiveNetworkInfo().isConnected();
}

 

in manifest,

manifest 파일에는 퍼미션을 선언합니다,
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

 

Edit: This method actually checks if device is connected to internet(There is a possibility it's connected to a network but not to internet).

편집: 이 방법은 장치가 인터넷에 연결되어 있는지 실제로 확인합니다(네트워크에는 연결되어 있지만 인터넷에는 연결되어 있지 않을 가능성이 있습니다).
public boolean isInternetAvailable() {
    try {
        InetAddress ipAddr = InetAddress.getByName("google.com"); 
        //You can replace it with your name
            return !ipAddr.equals("");

        } catch (Exception e) {
            return false;
    }
}

 

 

 가장 최근 달린 Solution 

Use this method:

다음 함수를 사용합니다:
public static boolean isOnline() {
    ConnectivityManager cm = (ConnectivityManager) context
            .getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo netInfo = cm.getActiveNetworkInfo();
    return netInfo != null && netInfo.isConnectedOrConnecting();
}

 

This is the permission needed:

필요한 권한은 다음과 같습니다:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

 

 

출처 : https://stackoverflow.com/questions/9570237/android-check-internet-connection

반응형
댓글
공지사항
최근에 올라온 글