본문 바로가기
Study/Android

WiFi 연결 하기및 끊기

by Answer Choi 2017. 7. 11.
반응형

먼저 Android 6.0이상부터는 WiFi및 위치정보 관련해서 작업을 수행할때


권한을 요청해야 합니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void permission(){
    if(ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)
            != PackageManager.PERMISSION_GRANTED) {
            
       if (ActivityCompat.shouldShowRequestPermissionRationale(this,
               Manifest.permission.ACCESS_COARSE_LOCATION)) {
            ActivityCompat.requestPermissions(
                   thisnew String[]{Manifest.permission.ACCESS_COARSE_LOCATION},
                    REQUEST_CODE_LOCATION);
        } else {
            ActivityCompat.requestPermissions(
                    thisnew String[]{Manifest.permission.ACCESS_COARSE_LOCATION},
                    REQUEST_CODE_LOCATION);
        }
    } 
}
cs


앱이 처음 실행되는 부분에 꼭 윗부분을 넣어주셔야 합니다.


1
2
3
4
5
6
7
8
9
10
11
void connect(){
    WifiConfiguration wificonfig=new WifiConfiguration();
    wificonfig.SSID = String.format("\"%s\"", WIFI_NAME);
    wificonfig.preSharedKey = String.format("\"%s\"", WIFI_PASSWORD);
 
    WifiManager wifiManager=(WifiManager)getApplicationContext().getSystemService(WIFI_SERVICE);
    int netId = wifiManager.addNetwork(wificonfig);
    wifiManager.disconnect();
    wifiManager.enableNetwork(netId, true);
    wifiManager.reconnect();        
    }
cs


위 코드가 WIFI에 접속하는 코드입니다.


특히 Line 6과 Line8은 WIFI의 접속을 끊는 코드입니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void discon_enerview(){
    String ssid = null;
    ConnectivityManager connManager = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo networkInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
    if (networkInfo.isConnected()) {
        final WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
        final WifiInfo connectionInfo = wifiManager.getConnectionInfo();
        if (connectionInfo != null && !TextUtils.isEmpty(connectionInfo.getSSID())) {
            ssid = connectionInfo.getSSID();
        }
    }
    if(ssid.contains("EnerView")){
        WifiManager wifi = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
        wifi.disconnect();
    }     
}
cs


Line 1~11 : 현재 접속된 WIFI 이름(SSID)를 가져오는 코드입니다.


Line 12~15 : 특정 WiFi(EnerView가 들어가는 SSID)일 경우 접속을 끊는 코드입니다.

반응형

인기글