Android wifi连接内网,4G同时开启,指定连接wifi内部通信

问题:当wifi和4G同时开启时,连接wifi内网指定ip会自动跳转到4G连接,导致连接不成功。而且无法使用系统服务

方案1:进入app端。先手动关闭4G,带wifi连接成功,正常通信,再手动开启。

用户体验差。但是可以先测试一下这样是否可行,如果可以再使用下面的方案2。

方案2:连接wifi指定ip前,指定网络使用wifi,连接成功通信后,再解除指定,当有访问外网需求时,就会自动使用4G。

目前android 12适用,

声明权限

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />  
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />

代码示例
}

import android.content.Context;  
import android.net.ConnectivityManager;  
import android.net.LinkProperties;  
import android.net.Network;  
import android.net.NetworkCapabilities;  
import android.net.NetworkRequest;  

public void connectUsingWifi(Context context) {  
    ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);  

    // 创建网络请求,指定使用Wi-Fi  
    NetworkRequest.Builder builder = new NetworkRequest.Builder();  
    builder.addTransportType(NetworkCapabilities.TRANSPORT_WIFI);  

    connectivityManager.registerNetworkCallback(builder.build(), new ConnectivityManager.NetworkCallback() {  
        @Override  
        public void onAvailable(Network network) {  
            // 使用Wi-Fi网络进行通信  
            connectivityManager.bindProcessToNetwork(network);  
            // 进行您的网络请求  
        }  

        @Override  
        public void onLost(Network network) {  
            // 网络丢失处理  
            connectivityManager.bindProcessToNetwork(null);  
        }  
    });  

绑定就在OnAvailable里面进行绑定,解绑,可以在wifi内网通信成功后进行,根据业务逻辑需要修改

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值