我正在使用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地址。
这里的任何帮助都是值得的。
答案 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地址也应该指向这个。)