我想知道是否连接了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,原因:unknown,额外信息: internet,漫游:false,故障转移:false,可用:true, featureId:-1,用户默认设置:false
WiFi开启 / 移动关闭
NetworkInfo:类型:mobile[HSUPA],状态:DISCONNECTED/DISCONNECTED, 原因:connectionDisabled,额外信息:(none),漫游:false, 故障转移:false,可用:true,featureId:-1,用户默认设置: false
WiFi开启 / 移动开启
NetworkInfo:类型:mobile[HSPA],状态:DISCONNECTED/DISCONNECTED, 原因:connectionDisabled,额外信息:(none),漫游:false, 故障转移:false,可用:true,featureId:-1,用户默认设置: false
正如你所看到的,每次都返回了true和当WiFi生效时仅显示为断开连接的状态。
澄清
我不是要查看我的手机当前是否通过移动网络连接。我正在尝试确定用户是否已启用/禁用移动网络上的数据访问。他们可以通过转到“设置”->“无线和网络设置”->“移动网络设置”->“启用数据”来打开或关闭此功能。