启用了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]);
}
}
}
当启用wifi和数据连接时,是否有人知道如何使用数据连接而不是WIFI?
答案 0 :(得分:13)
我也是这样做的,实际上只有在使用Android Lollipop时才能使用数据连接而不是WIFI。
似乎您正在尝试将Android Lollipop与目标API 23一起使用,因为您使用了bindProcessToNetwork而不是setProcessDefaultNetwork。
Android Lollipop允许多网络连接。
ConnectivityManager cm;
cm = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkRequest.Builder req = new NetworkRequest.Builder();
req.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);
req.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR);
cm.requestNetwork(req.build(), new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(Network network) {
//here you can use bindProcessToNetwork
}
});
我也在寻找这个,所以我希望这有用!
答案 1 :(得分:0)
在此处查找详细的4.4减去设计和棒棒糖以及设计。