有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

这是在我们的视图客户端中不起作用的意图

if (CheckNetwork.isInternetAvailable(context)) {
    return false;
} else {
    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("file:///安卓_asset/error.html"));
    context.startActivity(intent);
}

main活动

@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:///安卓_asset/error.html");
    }
}

共 (1) 个答案

  1. # 1 楼答案

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

    例如:

    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);
    

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

    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);
    }