android подключение к интернет-событию
есть ли событие, которое говорит мне, что устройство подключено к интернету (3G или wifi)? Мне нужно запустить некоторый запрос только после подключения устройства к интернету. Код должен поддерживать Android 2.1. Спасибо
4 ответов
Вы можете использовать широковещательный приемник и ждать действий ConnectivityManager.CONNECTIVITY_ACTION
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