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();
}
}
}