Вопрос по android – Как периодически проверять интернет-соединение во всем приложении?

12

Я делаю приложение, которое использует подключение к Интернету через приложение. Если интернет-соединение потеряно во время использования приложения, оно принудительно закрывается. Чтобы избежать этого, если интернет недоступен, я хочу показать оповещение. Как я могу это сделать. Во время входа в систему я проверяю подключение с помощью приведенного ниже кода. Но как я могу сделать это для всего приложения в фоновом режиме.

private boolean haveInternet(){
        NetworkInfo info = ((ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
        if (info==null || !info.isConnected()) {
                return false;
        }
        if (info.isRoaming()) {
                // here is the roaming option you can change it if you want to disable internet while roaming, just return false
                return true;
        }
        return true;
}

Спасибо..

@parag Можете ли вы показать мне пример для этого? wolverine
позволь намcontinue this discussion in chat Parag Chauhan
Всегда добро пожаловать для друзей Parag Chauhan
@parag, хорошо, спасибо. wolverine

Ваш Ответ

1   ответ
40

BroadcastReceiver это будет вызвано, когда статус подключения изменился:

     public class BroadCastSampleActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        this.registerReceiver(this.mConnReceiver,
                new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
    }
    private BroadcastReceiver mConnReceiver = new BroadcastReceiver() {
        public void onReceive(Context context, Intent intent) {
            boolean noConnectivity = intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false);
            String reason = intent.getStringExtra(ConnectivityManager.EXTRA_REASON);
            boolean isFailover = intent.getBooleanExtra(ConnectivityManager.EXTRA_IS_FAILOVER, false);

            NetworkInfo currentNetworkInfo = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
            NetworkInfo otherNetworkInfo = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager.EXTRA_OTHER_NETWORK_INFO);

            if(currentNetworkInfo.isConnected()){
                Toast.makeText(getApplicationContext(), "Connected", Toast.LENGTH_LONG).show();
            }else{
                Toast.makeText(getApplicationContext(), "Not Connected", Toast.LENGTH_LONG).show();
            }
        }
    };
}

а затем в вашемAndroidManifest Вы можете проверить, есть ли у вас подключение:

    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

Скачать исходный код -Вот

Это работает как шарм, это работает ..
Эй, вы проверили другой метод RegisterReceiver с подписью (получатель, фильтр, Braodcastpermission, обработчик)? я сомневаюсь, что такое «разрешение на вещание»; Вы будете использовать, если вам пришлось использовать его для регистрации этого получателя?
@ParagChauhan Как мы узнаем, что мы связаны сINTERNET а не только в сеть?
Я добавил этот код, но не получаю никаких всплывающих сообщений при изменении сети .. wolverine
@RishabhSrivastava Вы должны отменить регистрацию приемника вещания в приложении Destroy.

Похожие вопросы