在Android M中同时连接时获取LTE和WiFi的IP地址

时间:2015-12-05 06:35:59

标签: android networking android-6.0-marshmallow lte

我正在使用Android marshmallow api,这使得用户可以同时使用LTE和WiFi。(即)我们可以强制我们的应用程序使用hipri网络使用LTE,即使通过设置网络类型打开wifi也是如此

我查看了此链接:Send request over Mobile data when WIFI is ON.(Android L)

    builder.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);
    builder.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR);

    mNetworkCallback =
            new NetworkCallback() {
                @Override
                public void onAvailable(Network network) {
                    super.onAvailable(network);
                    Log.d(TAG, "activate(): onAvailable(): " + network);
                    myConnManager.bindProcessToNetwork(network);
                    myCallback.networkStateChanged(State.CONNECTED);
                }

                @Override
                public void onLosing(Network network, int maxMsToLive) {
                    super.onLosing(network, maxMsToLive);
                    Log.d(TAG, "activate(): onLosing(): ms to live: " + maxMsToLive);
                    myCallback.networkStateChanged(State.DISCONNECTING);
                }

                @Override
                public void onLost(Network network) {
                    super.onLost(network);
                    Log.d(TAG, "activate(): onLost(): " + network);
                    myConnManager.bindProcessToNetwork(null);
                    myCallback.networkStateChanged(State.DISCONNECTED);
                }
            };

现在我正致力于获取连接的WiFi网络和LTE网络的IP地址。我不知道如何并行检索两个连接网络的IP地址。

这里的任何帮助都是值得的。

1 个答案:

答案 0 :(得分:2)

以下是从Network network对象中获取ConnectivityManager manager = getSystemService(ConnectivityManager.class); LinkProperties prop = manager.getLinkProperties(network); InetAddress addr = prop.getLinkAddresses().get(0).getAddress(); 的方法:

NetworkCallback

在您的情况下,您可以在任何onAvailable()方法中使用此功能,您将获得移动数据连接的IP地址(尽管我怀疑它只在Network中有意义)。在API 23中,您可以使用getActiveNetwork()来获取与当前有效的默认数据网络相对应的one_of对象",该对象应该是Wi-Fi(但是,传统意味着获取IP地址也应该指向这个。)