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

Android 11使用WifiNetworkSuggestion存网后如何重连已保存WiFi?

Android 11 连接已保存WiFi的实现方案

前提说明

你之前使用的WifiNetworkSuggestion是Android 10及以上官方推荐的WiFi添加方案,添加成功的网络默认会被系统纳入自动连接优先级队列,当目标SSID在可连接范围内时,系统会自动尝试连接,无需额外主动触发。如果需要主动强制切换到指定已保存WiFi,可使用以下方案:

所需权限

需要提前申请以下权限:

  • 运行时权限:ACCESS_FINE_LOCATION
  • 普通权限:ACCESS_WIFI_STATE、CHANGE_WIFI_STATE

实现代码

// 要连接的目标SSID
String targetSsid = "MyiPhone";
String targetPwd = "myIphone123@#";
WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

// 1. 触发WiFi扫描,确认目标网络可用
wifiManager.startScan();
// 实际开发建议注册广播接收SCAN_RESULTS_AVAILABLE_ACTION后再处理扫描结果,此处为简化示例
List<ScanResult> scanResults = wifiManager.getScanResults();
boolean isTargetAvailable = false;
for (ScanResult result : scanResults) {
    if (targetSsid.equals(result.SSID)) {
        isTargetAvailable = true;
        break;
    }
}

if (!isTargetAvailable) {
    Log.e(TAG, "目标WiFi不在可连接范围内");
    return;
}

// 2. 构造网络请求,指定要连接的WiFi
NetworkRequest request = new NetworkRequest.Builder()
        .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
        .setNetworkSpecifier(new WifiNetworkSpecifier.Builder()
                .setSsid(targetSsid)
                .setWpa2Passphrase(targetPwd)
                .build())
        .build();

// 3. 发起连接请求
connectivityManager.requestNetwork(request, new ConnectivityManager.NetworkCallback() {
    @Override
    public void onAvailable(@NonNull Network network) {
        super.onAvailable(network);
        // 连接成功,绑定当前应用的网络请求走该WiFi
        connectivityManager.bindProcessToNetwork(network);
        Log.d(TAG, "已成功连接到:" + targetSsid);
    }

    @Override
    public void onUnavailable() {
        super.onUnavailable();
        Log.e(TAG, "连接目标WiFi失败");
    }
});

注意事项

  • 首次连接指定SSID时会弹出系统授权弹窗,用户确认后后续连接同个SSID不会重复弹窗
  • 若用户手动在系统设置中连接了其他WiFi,系统会优先保留用户手动选择的网络,你发起的连接请求会在用户断开手动选择的网络后自动生效
  • Android 11上如果需要先断开当前WiFi再切换,可在发起连接前调用wifiManager.disconnect(),该方法在Android 12及以上已被废弃

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:24:08