ProgramingTip

Android : 프로그래밍 방식으로 Wi-Fi 또는 인터넷 연결을 활성화 / 활성화하는 방법

bestdevel 2020. 10. 13. 08:10
반응형

Android : 프로그래밍 방식으로 Wi-Fi 또는 인터넷 연결을 활성화 / 활성화하는 방법


연결 관리자 클래스를 사용하여 Wi-Fi 또는 인터넷 네트워크에 액세스 할 수 있습니다.

ConnectivityManager connec = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);

// ARE WE CONNECTED TO THE NET
if ( connec.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED ||
  connec.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTED ) {
  // ...
}

여기서 01모바일 모바일 연결을 나타냅니다.

내 Android 장치가 둘 다에 사용할 경우 네트워크간에 전환 할 수 있습니까? 아니면 네트워크를 사용할 수 있습니까? 함수를 사용하는 것과 같습니다.

connec.getNetworkInfo(0).setState(NetworkInfo.State.DISCONNECTED);

Wi-Fi 활성화 또는 설정에 대해 알고 있습니다.

WifiManager wifiManager = (WifiManager)this.context.getSystemService(Context.WIFI_SERVICE);
wifiManager.setWifiEnabled(status);

가 될 수 상태 true있거나 false요구 사항에 따라.

편집하다 :

매니페스트 파일에 다음 권한도 필요합니다.

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

WiFi 활성화하기 :

WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
wifi.setWifiEnabled(true);

WiFi를 선택하십시오 :

WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
wifi.setWifiEnabled(false);

참고 : WiFi 상태로 액세스하려는 경우 AndroidManifest.xml 파일에 다음 권한을 추가해야합니다.

android.permission.ACCESS_WIFI_STATE
android.permission.UPDATE_DEVICE_STATS 
android.permission.CHANGE_WIFI_STATE

완벽한 솔루션 :

try {
    WifiManager wifi = (WifiManager) 
        context.getSystemService(Context.WIFI_SERVICE);

    WifiConfiguration wc = new WifiConfiguration();
    wc.SSID = "\"SSIDName\"";
    wc.preSharedKey  = "\"password\"";
    wc.hiddenSSID = true;
    wc.status = WifiConfiguration.Status.ENABLED; 

    wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
    wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
    wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);

    wc.allowedPairwiseCiphers
        .set(WifiConfiguration.PairwiseCipher.TKIP);
    wc.allowedPairwiseCiphers
        .set(WifiConfiguration.PairwiseCipher.CCMP);
    wc.allowedProtocols.set(WifiConfiguration.Protocol.RSN);

    boolean b=wifi.isWifiEnabled();
    if (b) {
        wifi.setWifiEnabled(false);
        Toast.makeText(context, "yes", Toast.LENGTH_SHORT).show();
    } else {
        wifi.setWifiEnabled(true);
        Toast.makeText(context, "no", Toast.LENGTH_SHORT).show();
    }
    //Log.d("WifiPreference", "enableNetwork returned " + b );

} catch (Exception e) {
    e.printStackTrace();
}

참조 : http://amitkumar-android.blogspot.com/p/installation-steps.html


Wi-Fi 비활성화를 활성화하려면 WifiManager클래스를 사용하여 Wi-Fi 에 대한 시스템 (안드로이드 장치) 서비스를 가져옵니다.

WifiManager wifi =(WifiManager)getSystemService(Context.WIFI_SERVICE); 

이제 클래스 의 객체 wifiWifiManager사용하여 Wi-Fi 상태를 가져옵니다.

if(wifi.isWifiEnabled())
    //Perform Operation
else
    //Other Operation

그리고 가장 중요한 것은 Android Manifest 파일에 다음 권한을 부여하는 것을 잊지 마십시오.

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.UPDATE_DEVICE_STATS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />

Android에서 Wifi 활성화 / 비활성화에 대한 프로젝트의 자세한 정보와 전체 샘플 코드를 얻으려면 내 웹 사이트 링크를 방문 하세요.


이 권한을 매니페스트에 추가하고 위의 코드를 사용하여 WiFi 상태를 변경하십시오.

 <!--permission ge enable and disable WIFI in android-->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>

컨텍스트 개체에 직접 액세스 할 수 없습니다.
내 솔루션은 다음과 같습니다.

Context appContext = Android.App.Application.Context;
var wifiManager = (WifiManager)appContext.GetSystemService(WifiService);
wifiManager.SetWifiEnabled(state);

또한 나는 예를 들어 일부 글을 변경해야했습니다. WIFI_SERVICE 대 WifiService.


다음 코드를 사용하여 Android 10 이전 기기 에서 Wi-Fi를 활성화 / 비활성화 할 수 있습니다.

WifiManager wifiManager = 
(WifiManager)this.context.getSystemService(Context.WIFI_SERVICE);

wifiManager.setWifiEnabled (status);

그러나 참고 가 불가능하다는 안드로이드 (10)에 더 이상 이렇게 아마뿐만 아니라 앞서 가고 있습니다.
https://issuetracker.google.com/issues/141011684

참고 URL : https://stackoverflow.com/questions/3930990/android-how-to-enable-disable-wifi-or-internet-connection-programmatically

반응형