android подключение к интернет-событию

есть ли событие, которое говорит мне, что устройство подключено к интернету (3G или wifi)? Мне нужно запустить некоторый запрос только после подключения устройства к интернету. Код должен поддерживать Android 2.1. Спасибо

4 ответов


Вы можете использовать широковещательный приемник и ждать действий ConnectivityManager.CONNECTIVITY_ACTION

на doc

Ex:

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);

использовать широковещательный приемник, который будет вызываться при изменении состояния сети:

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 будет вызываться всякий раз, когда изменяется состояние сети, и вы можете использовать методы, описанные в другом ответе, чтобы определить, действительно ли вы подключены или нет.


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`
}

используя эту функцию, вы можете знать, что устройство подключено к интернету. Я надеюсь, что это поможет вам.


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;
}

используйте эту функцию, функция вернет true, если интернет подключен еще false