package com.zeroxf7.solotool; import android.net.DnsResolver; import android.net.NetworkRequest; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.view.View; import android.view.Window; import android.view.WindowInsetsController; import android.webkit.WebChromeClient; import android.webkit.WebResourceRequest; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.ProgressBar; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; import androidx.core.view.WindowCompat; import androidx.core.view.WindowInsetsCompat; import androidx.core.view.WindowInsetsControllerCompat; public class MainActivity extends AppCompatActivity { private WebView webView; private ProgressBar progressBar; private final String url = "http://apollo.0xf7.com:80"; // Hardcoded URL private int retryCount = 0; private final int maxRetries = 100; private void hideSystemUI() { WindowInsetsControllerCompat windowInsetsController = WindowCompat.getInsetsController(getWindow(), getWindow().getDecorView()); // Configure the behavior of the hidden system bars. windowInsetsController.setSystemBarsBehavior( WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE ); windowInsetsController.hide(WindowInsetsCompat.Type.systemBars()); } @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); if (hasFocus) { hideSystemUI(); // Reapply fullscreen when the window gains focus. } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Request no title for your activity requestWindowFeature(Window.FEATURE_NO_TITLE); // Make the app fullscreen hideSystemUI(); setContentView(R.layout.activity_main); // Initialize the WebView and ProgressBar webView = findViewById(R.id.webView); progressBar = findViewById(R.id.progressBar); // Set WebView settings webView.getSettings().setJavaScriptEnabled(true); webView.setWebViewClient(new WebViewClient() { @Override public void onPageStarted(WebView view, String url, android.graphics.Bitmap favicon) { super.onPageStarted(view, url, favicon); progressBar.setVisibility(View.VISIBLE); // Show the progress bar when loading starts } @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); progressBar.setVisibility(View.GONE); // Hide the progress bar when loading finishes } @Override public void onReceivedError(WebView view, WebResourceRequest request, android.webkit.WebResourceError error) { super.onReceivedError(view, request, error); handleLoadError(error); // Handle error and retry } }); // Load the URL loadUrl(url); } private void loadUrl(String url) { webView.loadUrl(url); } private void handleLoadError(android.webkit.WebResourceError error) { if (retryCount < maxRetries) { retryCount++; Toast.makeText(this, "Loading failed (" + retryCount + "/" + maxRetries + ")", Toast.LENGTH_SHORT).show(); // Retry after 3 seconds webView.postDelayed(() -> loadUrl(url), 3000); } else { Toast.makeText(this, "Failed to load the page. Please check your connection.", Toast.LENGTH_LONG).show(); } } }