gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 00:05:30 24 4
gpt4 key购买 nike

我在 Android marshmallow api 中工作,它使用户能够在 LTE 和 WiFi 上工作。(即)即使通过设置网络类型打开 wifi,我们也可以强制我们的应用程序使用 hipri 网络使用 LTE。

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

这里的任何帮助都将不胜感激。

最佳答案

以下是如何从 Network network 对象中获取 InetAddress:

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

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

关于android - 在 Android M 中同时连接时获取 LTE 和 WiFi 的 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34102070/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com