Visit Sponsor

Written by 4:36 pm Android

Android WebView Example – Load Web Content in Apps

WebView allows Android applications to display web content inside a native app. It’s essentially a full browser engine embedded in your app, enabling hybrid experiences such as showing web pages, dashboards, documentation, or dynamic HTML content without leaving the app.

This updated guide on javatechig.com explains how to configure, load URLs, enable JavaScript securely, handle navigation events, and best practices for modern Android development using Kotlin and Java.

What Is WebView in Android?

WebView is a UI component that renders web content inside an app. Unlike launching an external browser, WebView lets you control navigation, customize behavior, and integrate closely with your app logic.

Common use cases:

  • Displaying help documentation
  • Rendering third-party web pages
  • Hybrid app screens
  • Embedded dashboards

Adding WebView to Your Layout

In your XML layout file:

<WebView
    android:id="@+id/webView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

This embeds a WebView component into your UI.

Basic WebView Implementation

Kotlin Example

val webView = findViewById<WebView>(R.id.webView)

// Enable JavaScript if needed
webView.settings.javaScriptEnabled = true

// Load a URL
webView.loadUrl("https://javatechig.com")

Java Example

WebView webView = findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("https://javatechig.com");

This loads web content directly inside your app.

Handling Navigation Inside WebView

By default, clicking links will open the device’s default browser. To keep navigation inside WebView, implement a WebViewClient.

Kotlin

webView.webViewClient = object : WebViewClient() {
    override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean {
        view?.loadUrl(request?.url.toString())
        return true
    }
}

Java

webView.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
        view.loadUrl(request.getUrl().toString());
        return true;
    }
});

This keeps all navigation within the WebView.

Enabling JavaScript Safely

JavaScript is disabled by default for security reasons. Only enable it if required:

webView.settings.javaScriptEnabled = true

Avoid enabling JavaScript for untrusted URLs as it may expose vulnerabilities.

Adding Progress Feedback

To show loading progress, use a WebChromeClient:

Kotlin

webView.webChromeClient = object : WebChromeClient() {
    override fun onProgressChanged(view: WebView?, progress: Int) {
        progressBar.progress = progress
        if (progress == 100) progressBar.visibility = View.GONE
    }
}

Java

webView.setWebChromeClient(new WebChromeClient() {
    @Override
    public void onProgressChanged(WebView view, int progress) {
        progressBar.setProgress(progress);
        if (progress == 100) progressBar.setVisibility(View.GONE);
    }
});

This provides user feedback during page loads.

Handling Back Navigation

Override the back button to navigate WebView history:

Kotlin

override fun onBackPressed() {
    if (webView.canGoBack()) {
        webView.goBack()
    } else {
        super.onBackPressed()
    }
}

Java

@Override
public void onBackPressed() {
    if (webView.canGoBack()) {
        webView.goBack();
    } else {
        super.onBackPressed();
    }
}

This ensures a seamless navigation experience inside WebView.

Security Considerations

Disable File Access

webView.settings.allowFileAccess = false

Avoid exposing local file access when loading untrusted pages.

Restrict Mixed Content

webView.settings.mixedContentMode = WebSettings.MIXED_CONTENT_NEVER_ALLOW

Prevents insecure content loading.

Loading Local Content

To load local HTML files from assets:

webView.loadUrl("file:///android_asset/sample.html")

Useful for offline help documentation or bundled content.

Common WebView Issues & Fixes

Page Not Loading

Cause: JavaScript required or navigation override missing
Fix: Enable JavaScript and set WebViewClient

Links Opening Externally

Cause: No WebViewClient
Fix: Implement shouldOverrideUrlLoading

Blank Screen on Secure Content

Cause: Mixed content blocked
Fix: Configure mixed content mode selectively

Best Practices (2026 Updated)

  • Only enable JavaScript when necessary
  • Isolate WebView from sensitive app logic
  • Use ChromeClient for UI feedback
  • Validate URLs before loading
  • Prefer HTTPS content over HTTP
Visited 9 times, 1 visit(s) today
Close