[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 ) {
// ...
}
여기서 0
및 1
각각 모바일 및 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);
이제 클래스 의 객체 wifi
를 WifiManager
사용하여 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.