Как использовать соединение с данными вместо WIFI, когда оба включены?

Доступны как Wi-Fi, так и подключение к данным. Поскольку мне нужно использовать мобильные данные для отправки HTTP-запроса на мобильный оператор, чтобы получить номер телефона, но андроид будет использовать Wi-Fi как прежде, так как я могу использовать подключение к данным вместо WIFI?

Когда я включаю Wi-Fi и мобильные данные в устройство. Я использую getAllNetworks() , но всегда возвращает wifi. Я не знаю. Почему getAllNetworks просто возвращает Wi-Fi, когда я включаю как Wi-Fi, так и мобильные данные?

Когда я просто getAllNetworks() мобильные данные, 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, когда включены Wi-Fi и соединение с данными?

Я тоже работал над этим, и на самом деле вы можете использовать подключение к данным вместо WIFI, только если вы работаете на Android Lollipop.

И кажется, вы пытаетесь использовать 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 } }); 

Я тоже искал это, поэтому надеюсь, что это будет полезно!

Найдите подробный дизайн с 4.4 минусами и леденец и плюс дизайн здесь.

Отправить запрос по мобильным данным, когда WIFI включен (Android L)