【发布时间】:2026-01-03 03:55:01
【问题描述】:
我有一个应用程序,我希望能够使用它从远程查询中获取连接状态报告。
我想知道是否连接了 WiFi,以及是否通过移动网络启用了数据访问。
如果 WiFi 超出范围,我想知道我是否可以依赖移动网络。
问题是wifi连接时data enabled总是返回true,没有wifi连接时才能正常查询移动网络。
我看到的所有答案都建议轮询以查看当前连接是什么,但我想知道移动网络是否可用,如果我需要它,即使我目前可能通过 WiFi 连接。
有没有不轮询看是否连接就知道是否开启移动网络数据?
编辑
因此,当通过 WiFi 连接时,如果我转到设置并取消选择“启用数据”,然后在我的应用程序中执行以下操作:
boolean mob_avail =
conMan.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isAvailable();
mob_avail 返回为“真”,但我已禁用移动网络数据,所以我希望它为“假”
如果我关闭 WiFi,则(正确地)没有连接,因为我已禁用移动网络数据。
那么当我通过WiFi连接时如何检查是否启用了移动网络数据?
更新
我查看了 ss1271 在 cmets 中建议的 getAllNetworkInfo()
我在以下 3 个条件下输出了返回的关于移动网络的信息
WiFi 关闭 - 移动数据开启
WiFi 开启 - 移动数据关闭
WiFi 开启 - 移动数据开启
得到以下结果:
WiFi 关闭:
mobile[HSUPA],状态:CONNECTED/CONNECTED,原因:未知,额外: 互联网,漫游:假,故障转移:假,isAvailable:真, featureId:-1,userDefault:false
WiFi 开启/移动关闭
NetworkInfo:类型:mobile[HSUPA],状态:DISCONNECTED/DISCONNECTED, 原因:connectionDisabled,额外:(无),漫游:false, 故障转移:false,isAvailable:true,featureId:-1,userDefault: 假的
WiFi 开启/移动设备开启
NetworkInfo:类型:mobile[HSPA],状态:DISCONNECTED/DISCONNECTED, 原因:connectionDisabled,额外:(无),漫游:false, 故障转移:false,isAvailable:true,featureId:-1,userDefault: 假的
所以你可以看到 isAvailable 每次都返回 true,并且状态仅在 WiFi 生效时显示为 Disconnected。
澄清
我不查看我的手机当前是否已通过移动网络连接。我AM试图确定用户是否已启用/禁用通过移动网络访问数据。他们可以通过转到设置 -> 无线和网络设置 -> 移动网络设置 -> 启用数据来打开和关闭此功能
【问题讨论】:
-
你试过了吗:getAllNetworkInfo()?
-
我想不起来了,但我回家后会尽快尝试更新。我认为这会返回一组可用连接?那我需要遍历数组吗?
-
是的,它会返回一个数组。老实说,我以前没有使用过这个,所以你可能需要打印一些日志来看看它会为你带来什么。请告诉我结果,祝你好运
标签: android networking network-connection