Проверка веб-просмотра на предмет подключения через наш сеанс - PullRequest
1 голос
/ 15 января 2011

У меня есть приложение WebView, и мне нужно проверять подключение к Интернету при каждом "щелчке" внутри приложения.Я получил следующий код, работающий для проверки интернета при запуске приложения.Но мне нужно выяснить, как выполнять эту проверку каждый раз, когда пользователь меняет страницы в веб-представлении.

Мой код:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    if(!isNetworkConnectionAvailable()){
        Context context = getApplicationContext();
        CharSequence text = "Sorry you need an Internet connection!  Please try again when the network" +
                " is available.";
        int duration = Toast.LENGTH_LONG;

        Toast toast = Toast.makeText(context, text, duration);
        toast.show();

        finish();
    }

    mWebView = (WebView) findViewById(R.id.webview);
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.loadUrl("http://example.com/");

    mWebView.setWebViewClient(new MyAppViewClient());
}

И это мой код проверки соединения:

    public boolean isNetworkConnectionAvailable() { 
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo netInfo = cm.getActiveNetworkInfo(); 

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

}

Возможно ли это?

1 Ответ

0 голосов
/ 15 января 2011

Я думаю, вы можете обнаружить новый загруженный URL-запрос следующим образом:

private class MyWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
    }

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

Мне любопытно, почему вы должны это проверить.Элемент управления webview покажет ошибку, если нет соединения.Вы просто пытаетесь замкнуть это сообщение об ошибке?Может быть очень маленькое временное окно, в котором ваша проверка будет успешной, но затем веб-сайт станет недоступным после обработки клика.

Надеюсь, это поможет, Кевин

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...