MainActivity.java

package com.yojnaportal.ypapp; import android.content.ClipData; import android.content.ClipboardManager; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.webkit.WebChromeClient; import android.webkit.WebResourceError; import android.webkit.WebResourceRequest; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.ImageButton; import android.widget.LinearLayout; import android.widget.PopupMenu; import android.widget.TextView; import android.widget.Toast; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { WebView webView; TextView pageTitle, pageBaseUrl; ImageButton btnBack, btnMenu; LinearLayout headerLayout; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Find Views webView = findViewById(R.id.webview); pageTitle = findViewById(R.id.pageTitle); pageBaseUrl = findViewById(R.id.pageBaseUrl); btnBack = findViewById(R.id.btnBack); btnMenu = findViewById(R.id.btnMenu); headerLayout = findViewById(R.id.headerLayout); // WebView Settings webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setDomStorageEnabled(true); webView.getSettings().setAllowFileAccess(false); webView.getSettings().setAllowContentAccess(false); // Handle navigation (सब कुछ WebView में ही खुलेगा) webView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { view.loadUrl(request.getUrl().toString()); return true; } @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } @Override public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) { view.loadUrl("file:///android_asset/error.html"); } }); // Title + URL update webView.setWebChromeClient(new WebChromeClient() { @Override public void onReceivedTitle(WebView view, String title) { String currentUrl = view.getUrl(); if (currentUrl != null && currentUrl.startsWith("file:///android_asset/")) { headerLayout.setVisibility(LinearLayout.GONE); } else { headerLayout.setVisibility(LinearLayout.VISIBLE); pageTitle.setText(title); try { Uri uri = Uri.parse(currentUrl); String host = uri != null ? uri.getHost() : null; if (host != null && !host.isEmpty()) { pageBaseUrl.setText("🔒 " + host); } else { pageBaseUrl.setText("🔒 " + currentUrl); } } catch (Exception e) { pageBaseUrl.setText(""); } } } }); // Load default local file webView.loadUrl("file:///android_asset/index.html"); // Back Button btnBack.setOnClickListener(v -> { if (webView.canGoBack()) { webView.goBack(); } else { finish(); } }); // Menu Button btnMenu.setOnClickListener(v -> showMenu()); } private void showMenu() { PopupMenu popup = new PopupMenu(this, btnMenu); popup.getMenu().add("Open in Chrome"); popup.getMenu().add("Copy Link"); popup.getMenu().add("Share Link"); popup.setOnMenuItemClickListener(item -> { String currentUrl = webView.getUrl(); if (item.getTitle().equals("Open in Chrome")) { Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(currentUrl)); startActivity(intent); } else if (item.getTitle().equals("Copy Link")) { ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); ClipData clip = ClipData.newPlainText("URL", currentUrl); clipboard.setPrimaryClip(clip); Toast.makeText(this, "Link copied!", Toast.LENGTH_SHORT).show(); } else if (item.getTitle().equals("Share Link")) { Intent shareIntent = new Intent(Intent.ACTION_SEND); shareIntent.setType("text/plain"); shareIntent.putExtra(Intent.EXTRA_TEXT, currentUrl); startActivity(Intent.createChooser(shareIntent, "Share via")); } return true; }); popup.show(); } @Override public void onBackPressed() { if (webView.canGoBack()) { webView.goBack(); } else { super.onBackPressed(); } } }
Next Post Previous Post