android - Lollipop 中的多网络

标签 android networking wifi android-5.0-lollipop cellular-network

我正在开发一个应用程序,它可以保存您的凭据并在连接到特定 ssid 时自动登录大学 wifi。一切正常。但是当移动数据打开并且 wifi 连接时,登录请求是通过移动数据发送的(因为 wifi 连接未激活)。 我阅读了文档并尝试了这个。

if(Build.VERSION.SDK_INT >= 21){
    ConnectivityManager connectivityManager = (ConnectivityManager)       context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkRequest.Builder requestBuilder = new NetworkRequest.Builder();
    requestBuilder.addTransportType(NetworkCapabilities.TRANSPORT_WIFI);
    connectivityManager.registerNetworkCallback(requestBuilder.build(), new ConnectivityManager.NetworkCallback() {
        @Override
        public void onAvailable(Network network) {
            ConnectivityManager.setProcessDefaultNetwork(network);
        }
    });
}
new LoginTask().execute();

这不能解决我的问题。 有什么建议吗?

最佳答案

我自己解决了这个问题。

ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);    
Network[] networks = connectivityManager.getAllNetworks();
NetworkInfo networkInfo;
Network network;
    for (int i = 0; i < networks.length; i++){               
        network = networks[i];
        networkInfo = connectivityManager.getNetworkInfo(network);
        if ((networkInfo.getType() ==     ConnectivityManager.TYPE_WIFI) && (networkInfo.getState().equals(NetworkInfo.State.CONNECTED))) {
           ConnectivityManager.setProcessDefaultNetwork(network);
            break;
        }
    }

关于android - Lollipop 中的多网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28592600/

相关文章:

javascript - 使用本地IP地址探测网络

Android:在应用程序中间从 3G 切换到 WIFI = 网络连接丢失

android - 以编程方式连接到可移植热点中的安卓设备

安卓自定义形状

android - 为什么 Android Facebook 界面不支持 Fragments?

java - Android Studio,从内部类填充listView

android - 两部安卓手机可以互通吗?

android - 让移动设备成为平板电脑的 Remote ?

android - Appmobi 应用程序可在 Wifi 上运行,但在 3g 上出现黑屏

android - 向 ViewPager 添加多张图片