问题:当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内网通信成功后进行,根据业务逻辑需要修改