package com.example.FastDocumentation import android.os.Bundle import android.webkit.HttpAuthHandler import android.webkit.WebView import android.webkit.WebViewClient import androidx.appcompat.app.AppCompatActivity import android.app.AlertDialog // NEW IMPORT for the dialog import android.widget.EditText // NEW IMPORT for text inputs import android.widget.LinearLayout // NEW IMPORT for dialog layout import android.view.ViewGroup.LayoutParams.MATCH_PARENT // NEW IMPORT for layout import android.view.ViewGroup.LayoutParams.WRAP_CONTENT // NEW IMPORT for layout class MainActivity : AppCompatActivity() { private lateinit var myWebView: WebView override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) myWebView = findViewById(R.id.webview) // 1. Configure WebView Settings val settings = myWebView.settings settings.javaScriptEnabled = true settings.domStorageEnabled = true // 2. Keep navigation inside the WebView AND handle HTTP Auth (MODIFIED) myWebView.webViewClient = object : WebViewClient() { // This method is called when the server requests HTTP authentication (like Basic Auth) override fun onReceivedHttpAuthRequest( view: WebView?, handler: HttpAuthHandler?, host: String?, realm: String? ) { // Manually trigger the popup using an AlertDialog if (handler != null) { showHttpAuthDialog(handler, host, realm) } } } // 3. Load the Target URL val urlToLoad = "https://docs.nxs.solutions/Fast" myWebView.loadUrl(urlToLoad) } // NEW FUNCTION: Manually constructs and shows the HTTP Auth dialog private fun showHttpAuthDialog(handler: HttpAuthHandler, host: String?, realm: String?) { val usernameInput = EditText(this).apply { hint = "Username" } val passwordInput = EditText(this).apply { hint = "Password" inputType = android.text.InputType.TYPE_CLASS_TEXT or android.text.InputType.TYPE_TEXT_VARIATION_PASSWORD } // Create a simple vertical layout for the two text fields val layout = LinearLayout(this).apply { orientation = LinearLayout.VERTICAL setPadding(50, 20, 50, 20) // Add some padding addView(usernameInput, LinearLayout.LayoutParams(MATCH_PARENT, WRAP_CONTENT)) addView(passwordInput, LinearLayout.LayoutParams(MATCH_PARENT, WRAP_CONTENT)) } AlertDialog.Builder(this) .setTitle("Authentication Required") .setMessage("Please enter credentials for $realm on $host") .setView(layout) // Set the custom layout .setPositiveButton("Log In") { _, _ -> // When the user clicks "Log In", proceed with the provided credentials val username = usernameInput.text.toString() val password = passwordInput.text.toString() handler.proceed(username, password) } .setNegativeButton("Cancel") { _, _ -> // If the user cancels, cancel the authentication request handler.cancel() } .setCancelable(false) .show() } // 4. Handle the device's back button override fun onBackPressed() { if (myWebView.canGoBack()) { myWebView.goBack() } else { super.onBackPressed() } } }