0
我正在研究一個應用程序,我需要實現一個功能。如果用戶連接到Wifi,我想斷開Wifi並將他連接到移動互聯網。Android網絡更改事件
我已經實現了ON/OFF Wifi和ON/OFF Mobile Data的所有功能,但是當我關閉Wifi並打開移動數據時,我想要的最大超時時間爲20秒。在發送移動數據ON請求後,應該只監聽用戶連接到移動數據的最多20秒。以下方法
我正在研究一個應用程序,我需要實現一個功能。如果用戶連接到Wifi,我想斷開Wifi並將他連接到移動互聯網。Android網絡更改事件
我已經實現了ON/OFF Wifi和ON/OFF Mobile Data的所有功能,但是當我關閉Wifi並打開移動數據時,我想要的最大超時時間爲20秒。在發送移動數據ON請求後,應該只監聽用戶連接到移動數據的最多20秒。以下方法
使用來檢查連接的連接Wi-Fi或移動
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秒,然後檢查移動數據,如果被啓用,則發送數據,否則警告用戶或任何你想要的 –