相关疑难解决方法(0)

如何查看Android上是否连接了Wi-Fi?

除非他们连接了Wi-Fi,否则我不希望我的用户甚至尝试下载某些内容.但是,我似乎只能判断是否启用了Wi-Fi,但他们仍然可以拥有3G连接.

android.net.wifi.WifiManager m = (WifiManager) getSystemService(WIFI_SERVICE);
android.net.wifi.SupplicantState s = m.getConnectionInfo().getSupplicantState();
NetworkInfo.DetailedState state = WifiInfo.getDetailedStateOf(s);
if (state != NetworkInfo.DetailedState.CONNECTED) {
    return false;
}
Run Code Online (Sandbox Code Playgroud)

然而,国家不是我所期望的.即使连接了Wi-Fi,我也会OBTAINING_IPADDR成为状态.

android wifimanager android-wifi

234
推荐指数
7
解决办法
21万
查看次数

使用`TRANSPORT_CELLULAR`时,ConnectionManager不提供网络回调

我试图在手机的蜂窝数据连接发生变化时接收回叫.我基本上需要知道它何时关闭以及何时打开.

我用的做到这一点TelephonyManagerPhoneStateListener.LISTEN_SERVICE_STATE,但现在我想用ConnectionManagerregisterNetworkCallback.

以下代码示例已在Android Emulator(API 28),A HUAWEI P20 Lite(API 26),HTC One M8(API 23)和Motorola G6(API 26)上进行了尝试.当我打开/关闭移动数据或激活飞行模式时,他们都没有调用任何回调.

人们说这应该有效.

    NetworkRequest.Builder builder = new NetworkRequest.Builder();

    builder.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);
    builder.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR);

    connManager.registerNetworkCallback(builder.build(), new ConnectivityManager.NetworkCallback() {
        @Override
        public void onAvailable(Network network) {
            Log.d("Conman Test", "onAvailable");
        }

        @Override
        public void onLost(Network network) {
            Log.d("Conman Test", "onLost");
        }

        @Override
        public void onUnavailable() {
            Log.d("Conman Test", "onUnavailable");
        }

        @Override
        public void onCapabilitiesChanged(Network network, NetworkCapabilities networkCapabilities) {
            Log.d("Conman Test", "onCapabilitiesChanged");
        }

        @Override
        public void onLinkPropertiesChanged(Network …
Run Code Online (Sandbox Code Playgroud)

android

8
推荐指数
1
解决办法
644
查看次数

如何在两者都启用时使用数据连接而不是WIFI?

启用了wifi和数据连接.由于我需要使用移动数据向移动运营商发送http请求以获取电话号码,但Android将使用wifi作为先验,所以我如何使用数据连接而不是WIFI?

当我在设备中启用wifi和移动数据时.我使用getAllNetworks()方法,但它总是返回wifi.我不知道为什么当我启用wifi和移动数据时,getAllNetworks只返回wifi?

当我只启用移动数据时,getAllNetworks()返回移动数据信息.

ConnectivityManager connectivityManager = (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE);
Network[] network = connectivityManager.getAllNetworks();
if(network != null && network.length >0 ){
     for(int i = 0 ; i < network.length ; i++){
          NetworkInfo networkInfo = connectivityManager.getNetworkInfo(network[i]);
          int networkType = networkInfo.getType();
          if(ConnectivityManager.TYPE_MOBILE == networkType ){
               connectivityManager.bindProcessToNetwork(network[i]);
          }
     }
}
Run Code Online (Sandbox Code Playgroud)

当启用wifi和数据连接时,是否有人知道如何使用数据连接而不是WIFI?

mobile android gprs wifi

5
推荐指数
1
解决办法
8606
查看次数

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

据我所知,硬件/操作系统决定哪个网络将执行我的应用程序的请求,如果MobileData和WiFi网络都打开,请在此处判断:在Android中,如果移动和wifi网络都可用,则使用哪一个?.

这里的评论也是这样说的: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- 那,我的手机用途最的Wi-Fi连接,为数据流量

我不确定该相信谁.

编辑:我找到了一些应该完成这项工作的代码片段: 当WIFI开启时通过移动数据发送请求.(Android L)但是我不知道如何测试它们以及它们是否真的做我想做的事情.

如何在两者都启用时使用数据连接而不是WIFI?

mobile networking android

5
推荐指数
0
解决办法
1930
查看次数

如何检查Android中是否真的连接了wifi

我想我的Android设备连接到wifi热点.我创建了一个新的wificonfiguration并将其添加到wifimanager,这wificonfigurationNetworkId.然后我调用该函数wifi.enableNetwork(NetworkId, true).

在那之后,我认为请求者将通过获取IP地址,身份验证,并最终物理连接到热点.那么有没有办法确定wifi是否物理连接?

我更喜欢类似处理程序的方法.

android android-wifi

2
推荐指数
2
解决办法
2万
查看次数

标签 统计

android ×5

android-wifi ×2

mobile ×2

gprs ×1

networking ×1

wifi ×1

wifimanager ×1