2011-05-19 113 views
6

是否有事件告訴我該設備已連接到INTERNET(3G或wifi)?只有設備連接到INTERNET後,我才需要啓動一些請求。該代碼需要支持Android 2.1。由於android連接到互聯網事件

回答

6

可以使用的廣播接收器,並等待行動ConnectivityManager.CONNECTIVITY_ACTION

這裏doc

例:

broadcastReceiver = new BroadcastReceiver() { 

       @Override 
       public void onReceive(Context context, Intent intent) { 

        ConnectivityManager connectivity = (ConnectivityManager) context 
          .getSystemService(Context.CONNECTIVITY_SERVICE); 


         NetworkInfo[] info = connectivity.getAllNetworkInfo(); 
         //Play with the info about current network state 


        } 

       } 
      }; 

      intentFilter = new IntentFilter(); 
      intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); 
      registerReceiver(broadcastReceiver, intentFilter); 
+0

我的評論這是我在尋找,謝謝知道的。 – 2011-05-19 09:20:00

+0

是正確的看到這個鏈接http://stackoverflow.com/questions/3767591/check-intent-internet-connection – Andy 2011-05-19 09:22:58

0
public static boolean checkInternetConnection(Context context) { 

    final ConnectivityManager mConnectivityManager = (ConnectivityManager) context 
      .getSystemService(Context.CONNECTIVITY_SERVICE); 

    final NetworkInfo netInfo = mConnectivityManager.getActiveNetworkInfo(); 
    if (netInfo != null && netInfo.isConnectedOrConnecting()) { 
     return true; 
    } else 
     return false; 
} 

使用此功能,如果網絡使用此功能,您能知道設備已連接互聯網的已連接其他假

+0

我知道如何檢查設備是否連接到互聯網,但我需要在設備連接到互聯網,而無需重複做檢查 – 2011-05-19 09:12:36

1
public static boolean connectionCheck(final Context context) 
{ 
    boolean returnTemp=true; 
    ConnectivityManager conManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo i = conManager.getActiveNetworkInfo(); 
    if ((i == null)||(!i.isConnected())||(!i.isAvailable())) 
    { 
     AlertDialog.Builder dialog = new Builder(context); 
     dialog.setTitle("CONNECTION STATUS"); 
     dialog.setMessage("Failed"); 
     dialog.setCancelable(false); 
     dialog.setPositiveButton("Ok",new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int which) { 
       WifiManager wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE); 
     wifiManager.setWifiEnabled(true); 
     Toast.makeText(TennisAppActivity.mContext,"Wi-Fi On", Toast.LENGTH_LONG).show(); 
      } 
     }); 
     dialog.show(); 
     return false; 
    } 
    return true;`enter code here` 
} 

函數將返回true。 我希望這對你有幫助。

+0

請參見上面:( – 2011-05-19 09:15:13

2

使用廣播接收器將調用每當網絡狀態的變化:

private NetworkStateReceiver mNetSateReceiver = null; 

private class NetworkStateReceiver extends BroadcastReceiver 
{ 
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     // Check the network state to determine whether 
     // we're connected or disconnected 
    } 
} 

@Override 
public void onCreate() 
{ 
    registerReceiver(mNetSateReceiver, new IntentFilter(
     ConnectivityManager.CONNECTIVITY_ACTION)); 
} 

@Override 
public void onDestroy() 
{ 
    save(); 
    unregisterReceiver(mNetSateReceiver); 
} 

只要網絡狀態發生變化,onReceive就會被調用,並且您可以使用其他答案中詳述的技術來確定您是否實際連接。