连接到WiFi时,在android上强制使用手机连接

连接到WiFi时,在android上强制使用手机连接,android,networking,routing,wifi,cellular-network,Android,Networking,Routing,Wifi,Cellular Network,我有一个诊断设备,也可以作为Wifi接入点。任何设备都可以连接到该接入点并从该设备请求信息。该设备显然无法通过该网络访问互联网 我尝试创建一个android应用程序,使用提供的Wifi网络从设备请求信息,然后使用手机连接将数据上传到互联网上的某个服务器 然而,无论何时连接Wifi网络,Android似乎都会关闭手机连接。由于Wifi网络未连接到互联网,因此无法上传数据,应用程序也无用 到目前为止,我尝试使用ConnectivityManager请求移动网络并将其绑定到我的通信套接字。此外,我还尝

我有一个诊断设备,也可以作为Wifi接入点。任何设备都可以连接到该接入点并从该设备请求信息。该设备显然无法通过该网络访问互联网

我尝试创建一个android应用程序,使用提供的Wifi网络从设备请求信息,然后使用手机连接将数据上传到互联网上的某个服务器

然而,无论何时连接Wifi网络,Android似乎都会关闭手机连接。由于Wifi网络未连接到互联网,因此无法上传数据,应用程序也无用

到目前为止,我尝试使用
ConnectivityManager
请求移动网络并将其绑定到我的通信套接字。此外,我还尝试迭代所有网络接口,并将通信套接字绑定到蜂窝接口的IP地址。但是,这两个请求都失败了,因为我无法从应用程序中查询蜂窝网络接口

我如何通过蜂窝式互联网连接将数据从Wifi网络中的设备转发到某台服务器


这个问题应该在Android版本5.1.0中解决,下面是正确的示例代码

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);
        }
    });
}