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

如何在Flutter与Android中以编程方式开启WiFi?Android相关API已废弃

Android 编程开启WiFi(替代废弃的setWifiEnabled方法)

从Android 10(API 29)开始,WifiManager.setWifiEnabled()方法被标记为废弃,Android 12(API 31)及以上更是完全禁止普通应用直接调用该方法控制WiFi开关。以下是不同版本的适配方案:

权限准备

首先在AndroidManifest.xml中声明必要权限:

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

<!-- Android 6.0+ 需动态申请 CHANGE_WIFI_STATE 权限 -->

分版本实现

Android 9 及以下(API 28 及更低)

可直接使用废弃前的方法,权限校验后调用即可:

val wifiManager = applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager
if (ContextCompat.checkSelfPermission(applicationContext, Manifest.permission.CHANGE_WIFI_STATE) == PackageManager.PERMISSION_GRANTED) {
    wifiManager.setWifiEnabled(true)
}
WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
if (ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.CHANGE_WIFI_STATE) == PackageManager.PERMISSION_GRANTED) {
    wifiManager.setWifiEnabled(true);
}

Android 10-11(API 29-30)

setWifiEnabled()虽已废弃但仍可调用,但官方不推荐依赖该方法。更稳妥的方式是引导用户通过系统设置面板开启WiFi:

val intent = Intent(Settings.Panel.ACTION_WIFI)
startActivity(intent)
Intent intent = new Intent(Settings.Panel.ACTION_WIFI);
startActivity(intent);

Android 12 及以上(API 31+)

系统完全禁止应用直接控制WiFi开关,必须引导用户通过系统设置面板操作,代码同上(调用Settings.Panel.ACTION_WIFI打开WiFi设置面板)。

关键注意事项

  • Android 12+ 的权限限制是系统级安全策略,任何应用都无法绕过,必须由用户手动确认开启WiFi。
  • 动态权限申请:Android 6.0+ 需在代码中主动申请CHANGE_WIFI_STATE权限,否则无法调用相关方法。
  • 避免依赖废弃API:即使在Android 10-11能使用setWifiEnabled(),也建议尽快迁移到引导用户操作的方案,避免后续版本兼容问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 09:39:28