我用于检查网站是否在线的代码有什么问题?

时间:2019-04-09 05:03:10

标签: java android android-webview android-websettings

我一直在为大学项目开发​​一个应用程序。该应用程序我只是想检查一个网站是否可用(在线)。如果可用,则在webview中打开它,如果没有打开预定的网站。

经过一番研究,我找到了以下代码,但它似乎不起作用。应用程序始终打开bing.com(即,在运行pingHost之后,flag的值不会得到更新)

public class MainActivity extends Activity {

    WebView web1;
    String Address;
    int flag=0;

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

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

            @Override
            public void run() {
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        pingHost("http://www.google.com", 80, 5000);
                        if (flag==1) {
                            web1 = (WebView) findViewById(R.id.webView1);
                            Address = "https://learn2lead.home.blog";
                            WebSettings webSetting = web1.getSettings();
                            webSetting.setBuiltInZoomControls(true);
                            webSetting.setJavaScriptEnabled(true);
                            web1.setWebViewClient(new WebViewClient());
                            web1.loadUrl(Address);
                        } else if (flag==0){
                            web1 = (WebView) findViewById(R.id.webView1);
                            Address = "http://bing.com";
                            WebSettings webSetting = web1.getSettings();
                            webSetting.setBuiltInZoomControls(true);
                            webSetting.setJavaScriptEnabled(true);
                            web1.setWebViewClient(new WebViewClient());
                            web1.loadUrl(Address);
                        }
                    }
                });
            }
        }, 0, 10000);

    public void pingHost(final String host, final int port, final int timeout) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                try (Socket socket = new Socket()) {
                    socket.connect(new InetSocketAddress(host, port), timeout);
                    flag = 1;
                } catch (IOException e) {
                    flag = 0;
                }
            }


        }).start();
    }
}

1 个答案:

答案 0 :(得分:0)

尝试

use App\Rules\MobileNo;

$rules = [
        'phone' => ['required', new MobileNo],
    ];

将您发布的问题修改为有效。

但是在实现时,您应该考虑关闭计时器任务,并认为它确实是必需的10秒周期。


检查互联网是否可用,可靠且快速

public class MainActivity extends Activity {

WebView web1;
String Address;
int flag = 0;

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

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

        @Override
        public void run() {
            if (isInternetAvailable()){
                flag = 1;
            }else{
                flag = 0;
            }
            System.out.println("pingHost flag: " + flag );
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    if (flag == 1) {
                        web1 = (WebView) findViewById(R.id.webView1);
                        Address = "https://learn2lead.home.blog";
                        WebSettings webSetting = web1.getSettings();
                        webSetting.setBuiltInZoomControls(true);
                        webSetting.setJavaScriptEnabled(true);
                        web1.setWebViewClient(new WebViewClient());
                        web1.loadUrl(Address);
                    } else if (flag == 0) {
                        web1 = (WebView) findViewById(R.id.webView1);
                        Address = "http://bing.com";
                        WebSettings webSetting = web1.getSettings();
                        webSetting.setBuiltInZoomControls(true);
                        webSetting.setJavaScriptEnabled(true);
                        web1.setWebViewClient(new WebViewClient());
                        web1.loadUrl(Address);
                    }
                }
            });
        }
    }, 0, 10000);
}

public boolean isInternetAvailable() {
    try {
        InetAddress ipAddr = InetAddress.getByName("google.com");
        //You can replace it with your name
        return !ipAddr.equals("");

    } catch (Exception e) {
        return false;
    }
}
}

检查:https://stackoverflow.com/a/27312494/1025070