如果没有互联网连接,请“重启”应用

时间:2014-06-05 10:38:51

标签: java android webview

我正在构建一个webview,如果没有互联网连接,它将加载一个本地错误html文件。我在我的 MainActivity 中创建了它,这是创建webview的地方。但是我从 myViewClient 访问我的webview时遇到问题,该问题处理webview中发生的所有事情。所以我不能在该类中使用browser.loadUrl("file:///android_asset/error.html");。我尝试使用意图,但当我没有互联网连接时按下我的网页上的按钮绝对没有任何反应。是否有可能用一个命令替换意图,该命令有点重新启动应用程序并从头开始,以便再次检查MainActivity中的Internet连接?我是初学者所以请解释简单

这是在 myViewClient

中无效的意图
if (CheckNetwork.isInternetAvailable(context)) {
    return false;
} else {
    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("file:///android_asset/error.html"));
    context.startActivity(intent);
}

MainActivity

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mClass = new ourViewClient(this);

    browser = (WebView) findViewById(R.id.wvwMain);

    browser.getSettings().setJavaScriptEnabled(true);
    browser.getSettings().setLoadWithOverviewMode(true);
    browser.getSettings().setUseWideViewPort(true);

    browser.setWebViewClient(new ourViewClient(this));
    if(CheckNetwork.isInternetAvailable(MainActivity.this)){
        browser.loadUrl("http://MyWebPage");
    } else {
        browser.loadUrl("file:///android_asset/error.html");
    }
}

1 个答案:

答案 0 :(得分:0)

您必须运行一个计时器,该计时器将在一段时间后检查互联网连接是否可用。

示例:

Timer t = new Timer();
t.scheduleAtFixedRate(new TimerTask() {

    @Override
    public void run() {
        //Check internet connection here
    }

},
//Set how long before to start calling the TimerTask (in milliseconds)
0,
//check once every 10 seconds, you might want to do this less frequently as checking network  is a costly operation
10000);

要重新启动您的Activity,请执行以下操作。

if (Build.VERSION.SDK_INT >= 11) {
    recreate(); //This method is only available on Android version 11 and above
} else {
    Intent intent = getIntent();
    intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
    finish();
    overridePendingTransition(0, 0);
    startActivity(intent);
    overridePendingTransition(0, 0);
}