상세 컨텐츠

본문 제목

[안드로이드] 현재 WIFI 네트워크 상태 알아보기 manager.getActiveNetworkInfo()

안드로이드

by aries574 2020. 6. 10. 20:53

본문


이번 시간에는 현재 안드로이드의 네트워크 상태를 알아보는 방법을 알려드리겠습니다.

wifi인지 모바일상태인지 둘 다 아닌 연결이 안되어 있는 상태인지???





activity_main.xml

상태를 보여줄 텍스트뷰와 버튼을 만듭니다.

버튼을 클릭하면 텍스트뷰에 현재의 상태를 보여줄 것입니다.


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">


<TextView
android:id="@+id/textView"
android:layout_width="200dp"
android:layout_height="100dp"
/>
<Button
android:id="@+id/stateBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="인터넷 상태"/>
</LinearLayout>


MainActivity.java

checkInternet()라는 이름의  현재 상태를 알려줄 함수를 만듭니다.

import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

private static final int TYPE_WIFI = 1; //와이파이
private static final int TYPE_MOBILE = 2;//모바일
private static final int TYPE_NOT_CONNECTED = 3;//네트워크 연결안된상태

private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

textView = findViewById(R.id.textView); //상태를 보여줄 텍스트뷰
Button stateBtn = findViewById(R.id.stateBtn);
stateBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

int state = checkInternet();

if(state == 1){
textView.setText("와이파이 상태입니다.");
}else if(state == 2){
textView.setText("모바일 상태입니다.");
}else if(state == 3){
textView.setText("네트워크 연결이 안되어있습니다.");
}
}
});
}


/**
* 인터넷 상태체크
* @return
*/
private int checkInternet(){

Context context = getApplicationContext();
ConnectivityManager manager = (ConnectivityManager) context.getSystemService(context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = manager.getActiveNetworkInfo();
if(networkInfo != null){
int type = networkInfo.getType();

if(type == ConnectivityManager.TYPE_MOBILE)
{
return TYPE_MOBILE; //모바일
                }else if(type == ConnectivityManager.TYPE_WIFI)
{
return TYPE_WIFI; //와이파이
                }
}

return TYPE_NOT_CONNECTED; //연결이 되지 않은 상태
}
}


반응형

관련글 더보기

댓글 영역