据我所知,硬件/操作系统决定哪个网络将执行我的应用程序的请求,如果MobileData和WiFi网络都打开,请在此处判断:In Android, if both mobile and wifi networks are available, which one is used? .

这条评论在这里说的相同:https://android.stackexchange.com/questions/57710/how-do-you-determine-if-youre-using-wi-fi-or-lte#comment79856_57919

即使WiFi和数据网络都可用,我是否可以指示我的网络请求仅使用WiFi?

我正在尝试解决此问题:用户有一个设置“不要使用移动数据”,如果移动数据开启(可能是收费),应禁止应用程序发送网络请求 .

但是,如果对我的链接问题的回答是真的,那意味着如果移动和WiFi都启用,则无法保证WiFi优先于移动设备,移动设备仍会执行请求,并且将向用户收费 .

在我的代码中,我检查可用的网络连接类型,如果该设置已启用(“不要使用移动数据”),我只会在WiFi为ON且MobileData为OFF时执行请求 . 如果两者都为ON,我不会执行请求以保护用户免于被收费 .

但是,很难向同事解释这一点,所以我在想 - 是否有可能指示我的应用程序的网络请求仅通过WiFi执行,即使WiFi和MobileData同时打开?

PS:我刚刚发现一个完全相反的意见,说明如果MobileData和WiFi都打开,所有请求都将通过WiFi执行:https://android.stackexchange.com/questions/17774/how-can-i-tell-that-my-phone-uses-the-wi-fi-connection-for-data-traffic

我不确定该相信谁 .

编辑:我找到了一些应该做这个工作的代码片段:Send request over Mobile data when WIFI is ON.(Android L)但我不知道如何测试它们,如果他们真的做我想做的事情 .

How to use data connection instead of WIFI when both are enabled?