使用Connectivity Manager Class,我们可以访问wifi或Internet网络:
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
分别指移动和wifi连接
如果我的Android设备连接到两者,我们可以在任何网络之间切换,还是可以禁用任何网络?就像使用函数一样:
connec.getNetworkInfo(0).setState(NetworkInfo.State.DISCONNECTED);
答案 0 :(得分:169)
我知道启用或禁用wifi:
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"/>
答案 1 :(得分:29)
启用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
答案 2 :(得分:12)
完整的解决方案:
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
答案 3 :(得分:4)
要启用禁用Wifi,请使用WifiManager
类为Wifi获取系统(Android设备)服务:
WifiManager wifi =(WifiManager)getSystemService(Context.WIFI_SERVICE);
现在wifi
类的对象WifiManager
用于获取wifi状态:
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访问my website link。
答案 4 :(得分:3)
在 Android Q(Android 10)中,您无法再通过编程方式启用/禁用wifi。使用设置面板来切换wifi连接:
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*/ }
}
答案 5 :(得分:1)
在清单中添加此权限,然后使用上面的代码更改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"/>
答案 6 :(得分:1)
我无法直接访问上下文对象 我的解决方案如下:
Context appContext = Android.App.Application.Context;
var wifiManager = (WifiManager)appContext.GetSystemService(WifiService);
wifiManager.SetWifiEnabled(state);
另外,我不得不改变一些着作,例如。 WIFI_SERVICE与WifiService。
答案 7 :(得分:0)
可以使用以下代码在Android 10之前的设备上启用/禁用wifi :
WifiManager wifiManager =
(WifiManager)this.context.getSystemService(Context.WIFI_SERVICE);
wifiManager.setWifiEnabled(状态);
但是请注意,在Android 10上将无法再进行此操作,并且可能还会继续进行。
https://issuetracker.google.com/issues/141011684
答案 8 :(得分:0)
无法启用/禁用Android 10(Q)及更高版本的wifi,您需要打开设置意图,
// for android Q and above
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
Intent panelIntent = new
Intent(Settings.Panel.ACTION_INTERNET_CONNECTIVITY);
startActivityForResult(panelIntent, 0);
} else {
// for previous android version
WifiManager wifiManager = (WifiManager)
this.getApplicationContext().getSystemService(WIFI_SERVICE);
wifiManager.setWifiEnabled(true);
}
在清单中
<uses-permission
android:name="android.permission.CHANGE_WIFI_STATE"
android:required="true" />
答案 9 :(得分:0)
从现在开始,从Android Q开始不推荐使用此方法。
尝试,这真的有帮助。
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) {// if build version is less than Q try the old traditional method
if (!wifiManager.isWifiEnabled()) {
wifiManager.setWifiEnabled(true);
btnOnOff.setText("Wifi ONN");
} else {
wifiManager.setWifiEnabled(false);
btnOnOff.setText("Wifi OFF");
}
} else {// if it is Android Q and above go for the newer way NOTE: You can also use this code for less than android Q also
Intent panelIntent = new Intent(Settings.Panel.ACTION_WIFI);
startActivityForResult(panelIntent, 1);
}