2014-01-20 92 views
0

我正在研究一個應用程序,我需要實現一個功能。如果用戶連接到Wifi,我想斷開Wifi並將他連接到移動互聯網。Android網絡更改事件

我已經實現了ON/OFF Wifi和ON/OFF Mobile Data的所有功能,但是當我關閉Wifi並打開移動數據時,我想要的最大超時時間爲20秒。在發送移動數據ON請求後,應該只監聽用戶連接到移動數據的最多20秒。以下方法

+1

你可以使用一個另一個線程什麼,睡的是20秒​​,然後檢查移動數據,如果被啓用,則發送數據,否則警告用戶或任何你想要的 –

回答

0

使用來檢查連接的連接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);