【问题标题】:Multi Networking in LollipopLollipop 中的多网络
【发布时间】:2015-02-18 19:50:06
【问题描述】:

我正在开发一个应用程序,该应用程序可以保存您的凭据并在连接到特定 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();

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

【问题讨论】:

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


    【解决方案1】:

    我自己解决了这个问题。

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

    【讨论】:

    • 这是唯一对我有用的 S5 with Marshmallow。我一开始也用requestNetwork(适用于大多数手机)尝试了上述方法,但我从未收到过使用 S5 M 的onAvailable 回调
    猜你喜欢
    • 2015-01-15
    • 2015-01-12
    • 1970-01-01
    • 1970-01-01
    • 2015-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多