Я работал над приложением для моего проекта колледжа.В этом приложении я просто хочу проверить, доступен ли сайт (онлайн) или нет.Если он доступен, откройте его в веб-представлении, а если он не открыт, - на предварительно указанном веб-сайте.
После некоторых исследований я обнаружил следующий код, но он, похоже, не работает.Приложение всегда открывается на bing.com (т.е. значение флага не обновляется после запуска pingHost)
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();
}
}