Как программно переключаться между WiFi и мобильной сетью? - PullRequest
4 голосов
/ 26 августа 2011

Сейчас у меня есть приложение, которое работает с WiFi, но пока я иду в сеть мобильных провайдеров, мое приложение не работает. Я сохранил один фоновый сервис, который проверяет сеть, но я не понимаю, как управлять сетевым коммутатором WiFi на мобильный и мобильный на WiFi? Я не понимаю, как обрабатывать переключение WiFi на мобильную сеть, потому что Wi-Fi уже включен, и я не нахожусь в зоне покрытия WiFi; в этой ситуации я хочу переключиться на мобильную сеть автоматически и наоборот. Мой подход заключается в следующем, который не работает:

String networkStatus = "disconnected";
            int netType = 0;
            try{
            ConnectivityManager connectivityManager =  (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
            if(connectivityManager != null ){
                    NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();

                    if(networkInfo != null){
                        netType = networkInfo.getType();
                        Log.d("Log", "connetion is available");
                    }else {
                        Log.d("Log", "connetion is  not available");
                        return networkStatus;
                    }

                //  if(networkInfo.isAvailable()){  // Old one
if(networkInfo.isAvailable() && networkInfo.isConnected()){  // New change added here
                        if(netType == ConnectivityManager.TYPE_WIFI)
                            {}
                        else if(netType == ConnectivityManager.TYPE_MOBILE )
                            {}
                            }
                        }
                    }catch(Exception e){
            Log.d("Log", "checkNetworkConnection" + e.toString());
            return networkStatus;
        }

Я уже прочитал много постов, услышав, что до сих пор не понимаю. Кто-нибудь может дать мне какую-либо идею или URL, где я могу получить такой же подход для реализации?

Заранее спасибо.

Ответы [ 2 ]

6 голосов
/ 05 сентября 2011

Я получил решение:

String networkStatus = "disconnected";
            int netType = 0;
            try{
            ConnectivityManager connectivityManager =  (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
            if(connectivityManager != null ){
                    NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();

                    if(networkInfo != null){
                        netType = networkInfo.getType();
                        Log.d("Log", "connetion is available");
                    }else {
                        Log.d("Log", "connetion is  not available");
                        return networkStatus;
                    }

                //  if(networkInfo.isAvailable()){  // Old one
if(networkInfo.isAvailable() && networkInfo.isConnected()){  // New change added here
                        if(netType == ConnectivityManager.TYPE_WIFI)
                            {}
                        else if(netType == ConnectivityManager.TYPE_MOBILE )
                            {}
                            }
                        }
                    }catch(Exception e){
            Log.d("Log", "checkNetworkConnection" + e.toString());
            return networkStatus;
        }
0 голосов
/ 02 сентября 2011
...