【发布时间】:2011-08-06 04:05:06
【问题描述】:
我想从我的 Android 应用程序中启用/禁用 wifi。我该怎么做?
【问题讨论】:
标签: java android kotlin wifi android-wifi
我想从我的 Android 应用程序中启用/禁用 wifi。我该怎么做?
【问题讨论】:
标签: java android kotlin wifi android-wifi
WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
wifi.setWifiEnabled(false); // true or false to activate/deactivate wifi
您还需要在您的 AndroidManifest.xml 中请求权限:
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
【讨论】:
wifi,如果启用使用false,如果禁用使用true
要在您的应用程序中启用/禁用 WiFi,您需要使用 WiFiManager 类。创建 WiFiManager 类的 Object,获取 WiFi 的服务。
WifiManager wifi;
wifi=(WifiManager)getSystemService(Context.WIFI_SERVICE);
wifi.setWifiEnabled(false);//Turn off Wifi
wifi.setWifiEnabled(true);//Turn on Wifi
而且你必须在 AndroidManifest.xml 中加入以下权限
<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中使用UI启用/禁用Wifi的完整示例代码,请访问this website
【讨论】:
试试这个代码
Intent gpsOptionsIntent = new Intent( android.provider.Settings.ACTION_WIFI_SETTINGS);
startActivityForResult(gpsOptionsIntent,0);
【讨论】:
试试这个
public void disableWifi(Context context, Boolean bool) {
WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
if(bool)
wifi.setWifiEnabled(false);
else
wifi.setWifiEnabled(true);
}
【讨论】:
要从 Android Q (Android 10) 中的应用启用/禁用 wifi,请使用 设置面板:
val panelIntent = Intent(Settings.Panel.ACTION_INTERNET_CONNECTIVITY)
startActivityForResult(panelIntent, 0)
在以前的 Android 版本上,这应该可以工作(应将适当的权限添加到 AndroidManifest 文件中,请参阅上面的答案):
(context?.getSystemService(Context.WIFI_SERVICE) as? WifiManager)?.apply { isWifiEnabled = true /*or false*/ }
生成的代码可能如下所示:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
val panelIntent = Intent(Settings.Panel.ACTION_INTERNET_CONNECTIVITY)
startActivityForResult(panelIntent, 0)
} else {
(context?.getSystemService(Context.WIFI_SERVICE) as? WifiManager)?.apply { isWifiEnabled = true /*or false*/ }
}
其中context 是对android.content.Context 对象的引用。
【讨论】:
public class MainActivity extends AppCompatActivity {
Switch btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Switch) findViewById(R.id.switch1);
btn.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
toggleWiFi(true);
Toast.makeText(getApplicationContext(), "Wi-Fi Enabled!", Toast.LENGTH_LONG).show();
} else {
toggleWiFi(false);
Toast.makeText(getApplicationContext(), "Wi-Fi Disabled!", Toast.LENGTH_LONG).show();
}
}
});
}
public void toggleWiFi(boolean status){
WifiManager wifiManager = (WifiManager)this.getSystemService(WIFI_SERVICE);
if (status && !wifiManager.isWifiEnabled()) {
wifiManager.setWifiEnabled(true);
} else if (!status && wifiManager.isWifiEnabled()) {
wifiManager.setWifiEnabled(false);
}
}
}
在清单文件中添加用户权限
【讨论】: