我有一种方法
public class XYZ {
public void foo(boolean isAvailable) {
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用 Proguard 进行混淆,请让我知道如何使用它的布尔参数保留方法 foo。
要求:- 仅当设备仅连接到实际 WiFi 接入点而不是移动热点或蜂窝数据时才需要运行一些网络调用。
我们需要检查当前连接的网络是否是移动热点。目前,如果连接到 WiFi 或蜂窝网络,我正在使用以下代码。
Network activeNetwork = connectivityManager.getActiveNetwork();
NetworkCapabilities networkCapabilities = mConnectivityManager.getNetworkCapabilities(activeNetwork);
boolean isWiFi = networkCapabilities.hasTransport(NetworkCapablities.TRANSPORT_WIFI);
Run Code Online (Sandbox Code Playgroud)
为了确定 wifi 连接是否是移动热点,我尝试了一种解决方法,使用以下方法。
connectivityManager.isActiveNetworkMetered()
Run Code Online (Sandbox Code Playgroud)
随着活动连接计量检查,更新的条件如下
boolean isWiFiNotAMobileHotspot = networkCapablities.hasTransport(NetworkCapablities.TRANSPORT_WIFI) && connectivityManager.isActiveNetworkMetered();
Run Code Online (Sandbox Code Playgroud)
由于 isActiveNetworkMetered() 仅有助于确定我们是否连接了按流量计费的连接(具有每日/每月数据限制的限制。)
因此,对于大多数移动热点,它给出了预期的结果,但如果移动热点有无限数据计划,则 isActiveNetworkMetered() 返回 false。
因此,不幸的是,此解决方案并不是查找设备是否连接到移动热点的准确方法。
请帮助我找到解决方案,检查设备是否连接到移动热点。