在连接WiFi的同时强制使用安卓手机的蜂窝数据连接

4
我拥有一台诊断设备,也可以作为Wifi接入点。任何设备都可以连接到该接入点,并请求设备的信息。该网络显然不提供互联网访问。
我尝试创建一个Android应用程序,使用提供的Wifi网络从设备请求信息,然后使用蜂窝连接将数据上传到互联网上的某个服务器。然而,当Wifi网络连接时,Android似乎会停用蜂窝连接。由于Wifi网络未连接到互联网,因此无法上传数据,该应用程序是无用的。
到目前为止,我尝试使用ConnectivityManager请求移动网络并将其绑定到我的通信套接字。此外,我尝试迭代所有网络接口并将通信套接字绑定到蜂窝接口的IP地址。然而,由于我无法从应用程序中查询蜂窝网络接口,因此两个请求均失败。
我该如何将Wifi网络中的设备数据转发到通过蜂窝互联网连接的某个服务器?
2个回答

1

1
这是正确的示例代码。
NetworkRequest cellularRequest = new NetworkRequest.Builder()
        .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
        .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET).build();
if (connectivityManager != null) {
    connectivityManager.requestNetwork(cellularRequest, new ConnectivityManager.NetworkCallback() {
        @Override
        public void onAvailable(@NonNull Network network) {
            super.onAvailable(network);
            // do request with the network
            OkHttpClient.Builder builder = new OkHttpClient.Builder();
            builder.socketFactory(network.getSocketFactory());
            OkHttpClient client = builder.build();
            Call call = client.newCall(request);
            Response response = call.execute();

            // do remove callback. if you forget to remove it, you will received callback when cellular connect again.
            connectivityManager.unregisterNetworkCallback(this);
        }

        @Override
        public void onUnavailable() {
            super.onUnavailable();
            // do remove callback
            connectivityManager.unregisterNetworkCallback(this);
        }
    });
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接