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