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回调. …
启用了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?