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

Android 10 Java开发连接指定WiFi的NetworkAvailable?.Invoke代码转写问题

对应Java实现方案

原代码NetworkAvailable?.Invoke(network)是C#语法的事件触发逻辑,作用是在WiFi网络可用时,将当前有效Network实例通知给监听该事件的后续业务逻辑。Java没有原生的事件语法,你可以通过自定义接口回调实现同等效果,步骤如下:

  1. 首先自定义网络可用回调接口
public interface OnNetworkAvailableListener {
    void onNetworkAvailable(Network network);
}
  1. 在你封装WiFi连接逻辑的类中声明监听器实例,提供对外设置入口
// 类全局变量
private OnNetworkAvailableListener mNetworkAvailableListener;

// 外部设置监听器的公共方法
public void setOnNetworkAvailableListener(OnNetworkAvailableListener listener) {
    this.mNetworkAvailableListener = listener;
}
  1. 在onAvailable回调中替换对应逻辑即可
final ConnectivityManager.NetworkCallback networkCallback = new ConnectivityManager.NetworkCallback() { 
    @Override 
    public void onAvailable(@NonNull Network network) { 
        super.onAvailable(network); 
        Log.i(TAG, "Connected to network with WIFI capabilities"); 
        // 完全等价原NetworkAvailable?.Invoke(network)的实现
        if (mNetworkAvailableListener != null) {
            mNetworkAvailableListener.onNetworkAvailable(network);
        }
    }
    // 其余回调方法保持原有逻辑即可
};
  1. 业务侧需要监听网络可用事件时,调用设置监听器的方法接收回调即可
// 示例:在Activity中使用
yourWifiConnectInstance.setOnNetworkAvailableListener(network -> {
    // 此处写网络可用后的业务逻辑,比如绑定进程默认网络、发起业务请求等
    ConnectivityManager.setProcessDefaultNetwork(network);
});
补充注意事项
  • Android 10及以上版本需要保证应用已动态申请ACCESS_FINE_LOCATION权限,同时 manifest 中已声明CHANGE_WIFI_STATE、ACCESS_WIFI_STATE、INTERNET权限
  • 网络回调默认运行在子线程,如需操作UI需要手动切换到主线程执行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 14:24:02