Trên Android phiên bản trước 4.4 (KitKat), WebView không hỗ trợ Local Storage khi load dữ liệu với scheme file:// trỏ đến thư mục (directory) thay vì file cụ thể.
Vấn đề
// KHÔNG HOẠT ĐỘNG trên Android < 4.4
browser.loadDataWithBaseUrl("file:///android_asset/", html, "text/html", "UTF-8", null);
Giải pháp: Chỉ định file cụ thể
// HOẠT ĐỘNG: trỏ đến file HTML cụ thể
browser.loadDataWithBaseUrl("file:///android_asset/new.html", htmlContent, "text/html", "UTF-8", null);
Giải pháp thay thế: Dùng HTTP base URL
browser.loadDataWithBaseURL("https://www.demo.com", htmlContent, "text/html", "utf-8", null);
Giải thích
WebView cũ cần một origin cụ thể (file:///path/to/file.html hoặc https://domain) để gán Local Storage. Khi base URL là thư mục, origin không xác định được, dẫn đến Local Storage bị vô hiệu hóa.
Lưu ý: Android 4.4+ dùng Chromium WebView, đã khắc phục vấn đề này. Nếu hỗ trợ Android cũ, hãy luôn cung cấp base URL là file cụ thể hoặc HTTP URL.