VPN termux about China.net

MainActivity.java

 MainActivity.java

package com.example.browser;

import android.app.AlertDialog;
import android.os.Bundle;
import android.view.View;
import android.webkit.ValueCallback;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ScrollView;
import android.widget.TextView;
import android.app.Activity;

public class MainActivity extends Activity {

    private Button b1, backButton, forwardButton, sourceButton;
    private EditText ed1;
    private WebView wv1;

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

        // Powiązanie elementów z layoutu XML
        b1 = findViewById(R.id.button);
        ed1 = findViewById(R.id.editText);
        backButton = findViewById(R.id.backButton);
        forwardButton = findViewById(R.id.forwardButton);
        sourceButton = findViewById(R.id.sourceButton);
        wv1 = findViewById(R.id.webView);

        // Konfiguracja ustawień WebView
        WebSettings webSettings = wv1.getSettings();
        webSettings.setJavaScriptEnabled(true);
        webSettings.setLoadsImagesAutomatically(true);
        webSettings.setLoadWithOverviewMode(true);
        webSettings.setUseWideViewPort(true);
        webSettings.setBuiltInZoomControls(true);
        webSettings.setSupportZoom(false);
        webSettings.setAllowFileAccess(true);
        webSettings.setJavaScriptCanOpenWindowsAutomatically(true);

        // WebViewClient zarządzający historią i paskiem adresu
        wv1.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
            }

            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);
                backButton.setEnabled(view.canGoBack());
                forwardButton.setEnabled(view.canGoForward());
                ed1.setText(url);
            }
        });

        wv1.setWebChromeClient(new WebChromeClient());

        // Domyślna strona startowa
        wv1.loadUrl("https://www.google.pl");

        // Obsługa przycisku "Idź"
        b1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String url = ed1.getText().toString().trim();
                if (!url.startsWith("http://") && !url.startsWith("https://")) {
                    url = "https://" + url;
                }
                wv1.loadUrl(url);
            }
        });

        // Obsługa przycisku "Wstecz"
        backButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (wv1.canGoBack()) {
                    wv1.goBack();
                }
            }
        });

        // Obsługa przycisku "Dalej"
        forwardButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (wv1.canGoForward()) {
                    wv1.goForward();
                }
            }
        });

        // Obsługa pobierania i wyświetlania kodu źródłowego strony
        sourceButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // Skrypt JavaScript pobierający cały kod HTML strony
                wv1.evaluateJavascript(
                    "(function() { return document.getElementsByTagName('html')[0].innerHTML; })();",
                    new ValueCallback<String>() {
                        @Override
                        public void onReceiveValue(String htmlSource) {
                            // Usunięcie znaków specjalnych ucieczki generowanych przez JS
                            if (htmlSource != null && htmlSource.length() > 2) {
                                htmlSource = htmlSource.substring(1, htmlSource.length() - 1)
                                        .replace("\\u003C", "<")
                                        .replace("\\n", "\n")
                                        .replace("\\\"", "\"");
                            }

                            // Wyświetlenie kodu źródłowego w wyskakującym okienku (Dialog)
                            showSourceCodeDialog(htmlSource);
                        }
                    }
                );
            }
        });
    }

    // Metoda tworząca okno dialogowe z kodem źródłowym
    private void showSourceCodeDialog(String sourceCode) {
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("Kod źródłowy strony");

    ScrollView scrollView = new ScrollView(this);
    TextView textView = new TextView(this);
    textView.setText(sourceCode);
    textView.setTextIsSelectable(true);
    textView.setPadding(30, 30, 30, 30);
    
    // --- ULEPSZENIE KONTRASTU (Edytor stylu ciemnego) ---
    textView.setTextColor(android.graphics.Color.WHITE); // Biały tekst
    textView.setBackgroundColor(android.graphics.Color.parseColor("#1E1E1E")); // Ciemnoszare/czarne tło
    scrollView.setBackgroundColor(android.graphics.Color.parseColor("#1E1E1E")); // Tło przewijania
    // ----------------------------------------------------

    scrollView.addView(textView);
    builder.setView(scrollView);

    builder.setPositiveButton("Zamknij", null);
    builder.show();
}

    // Obsługa fizycznego przycisku powrotu w telefonie
    @Override
    public void onBackPressed() {
        if (wv1.canGoBack()) {
            wv1.goBack();
        } else {
            super.onBackPressed();
        }
    }
}

No comments:

Post a Comment