Android WebView на отсутствие ошибки подключения

Я пытаюсь показать пользовательскую ошибку отсутствия соединения, но ниже не работает код и в файле manifest.xml указано состояние сети. Connection() проверяет состояние сети в классе. Надеюсь, это поможет в решении проблемы.

package com.testing.webview;

import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;

public class MainActivity extends Activity {
    public static final int DIALOG_NONETWORK = 0;
    WebView mWebView;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        if(!Connection()){
            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("file:///android_asset/index.html");
        mWebView.setWebViewClient(new HelloWebViewClient());
        mWebView.setBackgroundColor(Color.TRANSPARENT);
    }


    public boolean Connection() { 
        ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
        NetworkInfo netInfo = cm.getActiveNetworkInfo(); 
        if (netInfo != null && netInfo.isConnectedOrConnecting()){ 
            return true;
        }
        else{
            return false;
        } 
    }


    private class HelloWebViewClient extends WebViewClient {        

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
            mWebView.goBack();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
}

1 ответ

Почему вы заканчиваете занятие после отсутствия связи?

Есть тост, как:

Toast.makeText(getApplicationContext(),"Network is down",
                        Toast.LENGTH_SHORT).show();

А затем заставьте представление показать какую-то кнопку, чтобы "повторить" сетевой запрос, это то, что я бы сделал в любом случае. Тост в настоящее время не отображается, вероятно, потому что действие закрывается сразу после тоста, поэтому не хватает времени, чтобы показать его

Другие вопросы по тегам