Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

맨땅에 코딩

안드로이드 연결된 wifi ssid 정보 얻기 본문

앱 개발/Java

안드로이드 연결된 wifi ssid 정보 얻기

맨땅 2022. 7. 15. 08:47

목차

    반응형

     

    연결된 wifi ssid를 식별하여 특정 wifi ssid에만 작업이 가능하도록 하는 어플을 제작하는 프로젝트입니다

     

     

    우선 AndroidManifest에 필요한 권한을 요청해줍니다

     

     

     

     

    [AndroidManifest.xml]

    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

     

     

    전체 소스코드 첨부합니다

     

    이대로만 쓰시면 연결된 wifi의 ssid를 log로 확인해보실 수 있습니다

     

     

    [MainActiviy.java]

    
    public class MainActivity extends AppCompatActivity {
    
        public String SSID = null;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            tryToReadSSID();
            
        }
    
        private void tryToReadSSID() {
            //if requested permission isn't Granted yet
            if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) !=
                    PackageManager.PERMISSION_GRANTED){
                //Request permission from user
                ActivityCompat.requestPermissions(this, new String[]
                        {Manifest.permission.ACCESS_FINE_LOCATION}, 101);
            } else { //permission already granted
                WifiManager wifiManager = (WifiManager) this.getApplicationContext().getSystemService(WIFI_SERVICE);
                WifiInfo wifiInfo = wifiManager.getConnectionInfo();
                if (wifiInfo.getSupplicantState() == SupplicantState.COMPLETED) {
                    Log.d("test 1 ", wifiInfo.getSSID());
                    SSID = wifiInfo.getSSID().replaceAll("\"", ""); //SSID 앞뒤에 있는 따옴표 제거하고 SSID 변수에 입력
                    Log.d("test 2 ", SSID);
                    if(SSID.equals("원하는 SSID 이름")){
                        Log.d("test 3", "원하는 SSID 맞아");
    
                    }
                }
            }
        }
    
    }

     

     

    예를들어 연결되있는 wifi 이름이 finetech 라면 

    test 1의 로그를 찍어보시면 "finetech"

    test 2의 로그를 찍어보시면 finetech

    이렇게 나옵니다

     

     

     

    여기서 저는 사내 특정 wifi에 연결되었을 경우에만 작업을 진행할 예정이어서

    SSID.equals()를 통해 특정 wifi에 이름을 넣어줬습니다

     

     

     

    원하시는 방향에 맞게 변경하여 사용하시면 문제없이 돌아가실 겁니다

    궁금하신점은 댓글 남겨주세요 감사합니다

     

    반응형