我有一个应用程序,我希望能够使用它从远程查询中获取连接状态报告。
我想知道是否连接了 WiFi,以及是否通过移动网络启用了数据访问。
如果 WiFi 超出范围,我想知道我是否可以依赖移动网络。
问题是我通过WiFi连接时,数据启用总是返回true,而我只有在没有WiFi连接时才能正确查询移动网络。
我看到的所有答案都建议轮询以查看当前连接是什么,但我想知道移动网络是否可用,如果我需要它,即使我目前可能通过 WiFi 连接。
无论如何都可以告诉是否启用了移动网络数据而无需轮询以查看是否已连接?
编辑
因此,当通过 WiFi 连接时,如果我转到设置并取消选择“启用数据”,然后在我的应用程序中执行以下操作:
boolean mob_avail =
conMan.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isAvailable();
mob_avail 返回为“真”,但我已禁用移动网络数据,所以我希望它为“假”
如果我关闭 WiFi,则(正确地)没有连接,因为我禁用了移动网络数据。
那么,当我通过 WiFi 连接时,如何检查是否启用了移动网络数据?
更新
我按照 ss1271 的评论中的建议查看了 getAllNetworkInfo()
我在以下 3 个条件下输出了返回的有关移动网络的信息
WiFi 关闭 - 移动数据开启
WiFi 开启 - 移动数据关闭
WiFi 开启 - 移动数据开启
并得到以下结果:
关闭 WiFi 时:
移动[HSUPA],状态:CONNECTED/CONNECTED,原因:未知,额外:互联网,漫游:false,故障转移:false,isAvailable:true,featureId:-1,userDefault:false
WiFi开启/移动关闭
NetworkInfo:类型:mobile[HSUPA],状态:DISCONNECTED/DISCONNECTED,原因:connectionDisabled,额外:(无),漫游:false,故障转移:false,isAvailable:true,featureId:-1,userDefault:false
WiFi开启/移动开启
NetworkInfo:类型:mobile[HSPA],状态:DISCONNECTED/DISCONNECTED,原因:connectionDisabled,额外:(无),漫游:false,故障转移:false,isAvailable:true,featureId:-1,userDefault:false
因此,您可以看到 isAvailable 每次都返回 true,并且状态仅在 WiFi 生效时显示为已断开连接。
澄清
我不想查看我的手机当前是否通过移动网络连接。我正在尝试确定用户是否启用/禁用了移动网络上的数据访问。他们可以通过转到设置 -> 无线和网络设置 -> 移动网络设置 -> 启用数据来打开和关闭此功能