You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Android中通过代码开关WiFi及3G/4G网络?旧代码新版本失效

Android 编程启用/禁用WiFi与移动数据(适配新版本)

一、WiFi 开关处理

旧版本(API 28及以下)

你原有代码是有效的,需确保在AndroidManifest.xml中声明对应权限:

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
wifiManager.setWifiEnabled(true); // 启用WiFi
wifiManager.setWifiEnabled(false); // 禁用WiFi

新版本(API 29及以上)

从Android 10开始,普通应用无法直接调用setWifiEnabled()——Google收紧了该接口的权限,仅系统应用或持有android.permission.NETWORK_SETTINGS权限的应用可使用。普通应用只能引导用户到系统WiFi设置页手动操作:

Intent intent = new Intent(Settings.ACTION_WIFI_SETTINGS);
startActivity(intent);

二、移动数据(3G/4G)开关处理

旧版本(API 28及以下)

可通过ConnectivityManager的废弃接口操作,需声明对应权限:

<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
connectivityManager.setMobileDataEnabled(true); // 启用移动数据
connectivityManager.setMobileDataEnabled(false); // 禁用移动数据

新版本(API 29及以上)

普通应用同样无法直接控制移动数据,需引导用户到移动网络设置页:

// 跳转至移动数据设置页
Intent intent = new Intent(Settings.ACTION_NETWORK_OPERATOR_SETTINGS);
startActivity(intent);

系统级应用特殊处理

如果你的应用是定制ROM内置的系统级应用,可通过以下方式恢复直接控制能力:

  1. 在AndroidManifest.xml中添加系统权限:
<uses-permission android:name="android.permission.NETWORK_SETTINGS"/>
  1. 使用系统签名签署应用,或安装到系统分区。

内容的提问来源于stack exchange,提问作者Josort

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 12:39:50