我有一个应用程序,希望能够从远程查询中获取连接状态报告。
我想知道是否已连接WiFi,以及是否通过移动网络启用了数据访问。
如果WiFi超出范围,我想知道我是否可以依靠移动网络。
问题是,当我通过WiFi连接时,启用的数据始终返回true,并且只有在未通过WiFi连接时,我才能正确查询移动网络。
我所看到的所有答案都建议通过轮询来查看当前的连接,但是我想知道是否需要移动网络,即使目前我可能通过WiFi连接。
无论如何,是否无需轮询即可查看是否已连接是否启用了移动网络数据?
编辑
因此,当通过WiFi连接时,如果我转到设置并取消选择“启用数据”,然后在我的应用中执行以下操作:
boolean mob_avail =
conMan.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isAvailable();
mob_avail返回为“ true”,但是我已禁用了移动网络数据,因此我希望它为“ false”
如果我关闭WiFi,则(正确)没有连接,因为我禁用了移动网络数据。
因此,当我通过WiFi连接时,如何检查是否启用了移动网络数据?
更新
我查看了ss1271的注释中建议的getAllNetworkInfo()
我在以下3种情况下输出了有关移动网络的返回信息
WiFi关闭-开启移动数据
WiFi打开-移动数据关闭
WiFi打开-移动数据打开
并得到以下结果:
关闭WiFi:
mobile [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影响时显示为Disconnected。
澄清说明
我不希望查看手机当前是否通过移动网络连接。我AM试图建立在移动网络中的用户是否已启用/禁用数据访问。他们可以通过转到设置->无线和网络设置->移动网络设置->已启用数据来启用和禁用此功能。