Получить IP-адрес LTE и WiFi при одновременном подключении в Android M
Я работаю в Android зефира API, который позволяет пользователю работать как на LTE, так и на Wi-Fi (то есть) мы можем заставить наше приложение использовать LTE, используя сеть hipri, даже когда Wi-Fi включен, установив тип сети.
Я проверил эту ссылку: Отправить запрос через мобильные данные, когда WIFI включен.(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);
}
};
Сейчас я работаю над получением IP-адреса как подключенной сети Wi-Fi, так и сети LTE. Я не уверен, как получить IP-адрес обеих подключенных сетей параллельно.
Любая помощь здесь будет заметна.
1 ответ
Вот как вы можете получить 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-адреса также должны указывать на этот).