相关疑难解决方法(0)

WIFI开启时通过移动数据发送请求.(Android L)

SDK:Android 5.0.1.

Android版本:LRX22C.

设备:Nexus 5.

问题:KITKAT(4.4.4)及以下API

1)startUsingNetworkFeature(int networkType, String feature) 不推荐使用此方法.不赞成使用清洁剂requestNetwork(NetworkRequest, ConnectivityManager.NetworkCallback).

2)requestRouteToHost(int networkType, int hostAddress) 不推荐使用此方法.贬低赞成requestNetwork(NetworkRequest, ConnectivityManager.NetworkCallback),setProcessDefaultNetwork(Network)getSocketFactory().

用于在WIFI和移动数据打开时通过移动数据网络发送请求.

启动Android L后,API已弃用,不再有效.

新的API /类NetworkRequest.Builder,NetworkRequest,ConnectivityManager.NetworkCallback,requestNetwork,registerNetworkCallback分别使用. 详细信息这里有关于API使用
Android L API的信息

码:

ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

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

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

NetworkRequest networkRequest = builder.build();
connectivityManager.requestNetwork(networkRequest, networkCallback);
connectivityManager.registerNetworkCallback(networkRequest, networkCallback);
Run Code Online (Sandbox Code Playgroud)

工作场景:

onAvailable接收回调上的移动数据.

不工作场景:移动和Wifi都已打开并连接,onAvailable未从系统接收回叫.因此无法设置setProcessDefaultNetwork, ConnectivityManager.setProcessDefaultNetwork(preferedNetwork);

经常:永远

预期输出:当wifi打开时获取移动网络avaliabe回调. …

networking android android-wifi android-5.0-lollipop

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

如何在两者都启用时使用数据连接而不是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
查看次数