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

Android应用已通过代码连接Wi-Fi但无法访问网络求助

Android WiFi程序化连接后应用无法访问网络的排查与解决

核心问题:未绑定进程到目标WiFi网络

通过ConnectivityManager.requestNetwork()成功连接WiFi后,系统仅完成网络链路建立,但应用默认仍使用系统全局默认网络,不会自动切换到新连接的WiFi。必须手动绑定进程或请求到该Network实例。

解决方法1:绑定整个应用进程到目标网络

在onAvailable回调中添加进程绑定逻辑:

@Override
public void onAvailable(@NonNull Network network) {
    super.onAvailable(network);
    connectionStatus[0] = "true";
    // 绑定当前进程到该WiFi网络
    ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        cm.bindProcessToNetwork(network);
    } else {
        ConnectivityManager.setProcessDefaultNetwork(network);
    }
}

如需恢复默认网络,调用cm.bindProcessToNetwork(null)即可。

解决方法2:为单个网络请求绑定目标网络

若无需全局切换,可针对特定请求(如OkHttp、HttpURLConnection)指定使用该网络:

  • OkHttp示例:
OkHttpClient client = new OkHttpClient.Builder()
    .socketFactory(network.socketFactory())
    .build();
  • HttpURLConnection示例:
URL url = new URL("https://example.com");
HttpURLConnection conn = (HttpURLConnection) network.openConnection(url);

额外排查项

  • 补充网络能力标识:构建NetworkRequest时,需添加NET_CAPABILITY_INTERNET,否则系统判定该网络无互联网访问权限:
networkRequestBuilder.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);
  • 保留NetworkCallback引用:匿名NetworkCallback易被GC回收导致连接丢失,建议将其声明为类成员变量:
private ConnectivityManager.NetworkCallback mWifiCallback;

// 初始化回调
mWifiCallback = new ConnectivityManager.NetworkCallback() {
    @Override
    public void onAvailable(@NonNull Network network) {
        // 处理逻辑
    }

    @Override
    public void onLost(Network network) {
        // 处理逻辑
    }
};

// 请求网络时传入
cm.requestNetwork(networkRequest, mWifiCallback);
  • 验证位置权限:Android Q及以上版本连接WiFi需ACCESS_FINE_LOCATION权限,确保Manifest已声明并完成动态申请:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 09:39:57