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

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

问题描述:

我正在使用Android棉花糖api,它使用户可以同时使用LTE和WiFi(即)我们可以强制我们的应用程序使用使用hipri网络的LTE,即使在通过设置网络类型打开wifi。获取LTE和WiFi同时连接到Android M时的IP地址

我检查这个链接: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地址。

这里的任何帮助将是可观的。

+0

“检索IP地址”---?。我认为你想在你的两个接口(LTE和WiFi)上进行DHCP连接。检查是否有任何API用于DHCP连接请求。 – Jay

这里是你如何可以得到InetAddressNetwork network对象:

ConnectivityManager manager = getSystemService(ConnectivityManager.class); 
LinkProperties prop = manager.getLinkProperties(network); 
InetAddress addr = prop.getLinkAddresses().get(0).getAddress(); 

在你的情况,你可以在任何NetworkCallback方法利用这一点,你会得到你的手机的IP地址数据连接(尽管我怀疑它只在onAvailable()有意义)。在API 23中,您可以使用getActiveNetwork()获取与“当前有效的默认数据网络”相对应的Network对象,该对象应该是Wi-Fi(但传统意思是指获取IP地址也应该指向这个网络)。

+0

顺便说一下,6.0中有一个阻止使用'requestNetwork()'的错误,它在6.0.1中修复。 – cuihtlauac

+0

谢谢cuihtlauac。现在我有另一个查询。我在一个wifi通话中......当wifi连接失败时,我想连接它与数据网络并保持通话正常......当我用我将要连接的数据网络注册时,这是可能的。为此,我需要数据连接的IP。所以当wifi强度低于1时,我们正在考虑通过代码制作wifi->数据转换手册。因此,我们将拥有两个IP。我可以强迫数据包在同一通话中无缝地传输数据和无线网络吗? – Ajitha

+0

对不起,我从来没有尝试过这样做。看起来像一个大话题,可能值得问另一个问题:-) – cuihtlauac