获取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地址。
这里的任何帮助将是可观的。
这里是你如何可以得到InetAddress
了Network 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地址也应该指向这个网络)。
顺便说一下,6.0中有一个阻止使用'requestNetwork()'的错误,它在6.0.1中修复。 – cuihtlauac
谢谢cuihtlauac。现在我有另一个查询。我在一个wifi通话中......当wifi连接失败时,我想连接它与数据网络并保持通话正常......当我用我将要连接的数据网络注册时,这是可能的。为此,我需要数据连接的IP。所以当wifi强度低于1时,我们正在考虑通过代码制作wifi->数据转换手册。因此,我们将拥有两个IP。我可以强迫数据包在同一通话中无缝地传输数据和无线网络吗? – Ajitha
对不起,我从来没有尝试过这样做。看起来像一个大话题,可能值得问另一个问题:-) – cuihtlauac
“检索IP地址”---?。我认为你想在你的两个接口(LTE和WiFi)上进行DHCP连接。检查是否有任何API用于DHCP连接请求。 – Jay