android - 如何以编程方式处理 WiFi 到移动网络的切换?

标签 android networking wifi 3g

现在,我有一个可以与 WiFi 配合使用的应用程序,但是当我去移动提供商网络时,我的应用程序无法正常工作。我维护了一项检查网络的后台服务,但我不知道如何处理网络切换 WiFi 到移动和移动到 WiFi?我不知道如何处理 WiFi 到移动网络的切换,因为 WiFi 已经启用并且我不在 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;
        }

我已经阅读了很多帖子,但还是听不懂。任何人都可以给我任何想法或网址,我可以在其中获得相同的实现方法吗?

提前致谢。

最佳答案

我得到了解决方案:

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;
        }

关于android - 如何以编程方式处理 WiFi 到移动网络的切换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7205720/

相关文章:

Android - 如何基于 sim Network 每次获取用户当前位置

android - Android 模拟器上的 Instagram

java - 通过安卓连接WiFi

java - Android 模拟器无法启动或启动。什么都没有弹出

java - 在android中使用浮点值设置布局边距

Android:如何以编程方式访问 AVD 管理器中显示的设备序列号(API 版本 8)

android - Worklight - Wifi 中的连接触发器引发错误

android - 在 Android 上 React Native,使用获取的 ajax 调用失败

c - 线程结束,结束整个程序?

ios - 强制 iOS 设备应用通过本地 WIFI 网络通话