我有一个应用程序,我希望能够使用从远程查询获得连接状态报告。
我想知道是否连接了 WiFi,以及是否能通过移动网络进行数据访问。
如果无线网络超出范围,我想知道我是否可以依靠移动网络。
问题在于,当我使用 WiFi 连接时,启用的数据总是返回为真,而且只有在没有使用 WiFi 连接时,我才能正确地查询移动网络。
我看到的所有答案都建议进行投票,看看当前的连接是什么,但我想知道如果我需要移动网络,是否可用,即使我现在可能使用 WiFi 连接。
是否有任何办法告诉移动网络数据是否在没有轮询的情况下启用,以查看是否已连接?
剪辑
因此,当通过 WiFi 连接时,如果我去设置并取消选择“启用数据”,然后在我的应用程序中我这样做:
boolean mob_avail =
conMan.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isAvailable();
Mob _ avail 返回为“ true”,但是我已经禁用了 Mobile Network Data,所以我认为它应该是“ false”
如果我关闭 WiFi,就没有连接,因为我已经禁用了移动网络数据。
那么,当我使用 WiFi 连接时,如何检查移动网络数据是否已启用?
更新
我查看了 ss1271在评论中建议的 getAllNetworkInfo ()
我输出的信息返回有关移动网络在以下3个条件
无线上网-移动数据开启
无线上网-移动数据关闭
无线上网-流动数据开启
结果如下:
关闭 WiFi:
移动[ HSUPA ] ,状态: 连接/连接,原因: 未知,额外: 互联网,漫游: 假,故障转移: 假, Feature ureId: -1,userDefault: false
无线上网/手机关机
NetworkInfo: type: mobile [ HSUPA ] ,state: DISCONNECTED/DISCONNECTED, 原因: Connection 禁用,额外: (无) ,漫游: 假, 故障转移: false,isReceiable: true,Feature ureId: -1,userDefault: 假的
打开 WiFi/手机
NetworkInfo: type: mobile [ HSPA ] ,state: DISCONNECTED/DISCONNECTED, 原因: Connection 禁用,额外: (无) ,漫游: 假, 故障转移: false,isReceiable: true,Feature ureId: -1,userDefault: 假的
所以你可以看到,每一次 isOpable 都返回 true,并且状态只有在 WiFi 受到影响时才显示为“断开连接”。
澄清
我是 没有期待看到如果我的手机目前连接的移动网络。我 上午试图确定用户是否已经启用/禁用了移动网络上的数据访问。他们可以通过设置-> 无线和网络设置-> 移动网络设置-> 启用数据来打开和关闭