[android] 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각각 모바일 및 Wi-Fi 연결을 나타냅니다.

내 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 활성화 / 비활성화에 대한 프로젝트의 자세한 정보와 전체 샘플 코드를 얻으려면 내 웹 사이트 링크를 방문하십시오 .


답변

Android Q (Android 10) 에서는 더 이상 프로그래밍 방식으로 Wi-Fi를 활성화 / 비활성화 할 수 없습니다. 설정 패널 을 사용 하여 Wi-Fi 연결을 전환합니다.

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
    val panelIntent = Intent(Settings.Panel.ACTION_INTERNET_CONNECTIVITY)
    startActivityForResult(panelIntent, 0)
} else {
    // use previous solution, add appropriate permissions to AndroidManifest file (see answers above)
    (this.context?.getSystemService(Context.WIFI_SERVICE) as? WifiManager)?.apply { isWifiEnabled = true /*or false*/ }
}


답변

이 권한을 매니페스트에 추가하고 위의 코드를 사용하여 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.