Android网络更改事件

Android网络更改事件,android,android-wifi,Android,Android Wifi,我正在开发一个需要实现一个功能的应用程序。若用户连接到Wifi,我想断开Wifi并将其连接到移动互联网 我已经实现了打开/关闭Wifi和打开/关闭移动数据的所有功能,但我希望在关闭Wifi和打开移动数据时,最长超时时间为20秒。发送请求移动数据后,它最多只能监听用户是否连接到移动数据20秒。使用以下方法检查WIFI或移动连接 public static boolean isInternetAvailable(Context context) { boolean have

我正在开发一个需要实现一个功能的应用程序。若用户连接到Wifi,我想断开Wifi并将其连接到移动互联网


我已经实现了打开/关闭Wifi和打开/关闭移动数据的所有功能,但我希望在关闭Wifi和打开移动数据时,最长超时时间为20秒。发送请求移动数据后,它最多只能监听用户是否连接到移动数据20秒。

使用以下方法检查WIFI或移动连接

 public static boolean isInternetAvailable(Context context)
    {
        boolean haveConnectedWifi = false;
        boolean haveConnectedMobile = false;
        boolean connectionavailable = false;

        ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo[] netInfo = cm.getAllNetworkInfo();


        NetworkInfo informationabtnet = cm.getActiveNetworkInfo();
        for (NetworkInfo ni : netInfo)
        {
            try
            {

            if (ni.getTypeName().equalsIgnoreCase("WIFI"))
                if (ni.isConnected())
                    haveConnectedWifi = true;
            if (ni.getTypeName().equalsIgnoreCase("MOBILE"))
                if (ni.isConnected())
                    haveConnectedMobile = true;
            if(informationabtnet.isAvailable()&&informationabtnet.isConnected())
                connectionavailable = true;
                Log.i("ConnectionAvailable", ""+connectionavailable);

            }
            catch (Exception e) {
                // TODO: handle exception
                System.out.println("Inside utils catch clause , exception is"+e.toString());
                e.printStackTrace();

            }
        }
        return haveConnectedWifi || haveConnectedMobile;
    }
使用此方法,您将了解手机连接到哪个网络,并可以执行所需的操作

关闭WIFI时运行此声明。此语句将在20秒后执行,您可以在此处执行任何操作

  new Handler().postDelayed(new Runnable() {
                        @Override
                        public void run() {

//TODO this statement will execute after 20 seconds
                        }
                    }, 1 * 20 * 1000);

您可以使用另一个线程,并将其休眠20秒,然后检查移动数据,如果该线程已启用,则向用户发送数据、其他警告或任何您想要的内容